如何从SQL转置结果集
发布时间:2020-12-12 06:35:37 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用Microsoft SQL Server 2008. 我有一个看起来像这样的表: |======================================================|| RespondentId | QuestionId | AnswerValue | ColumnName | |======================================================|| P123
我正在使用Microsoft SQL Server 2008.
我有一个看起来像这样的表: |======================================================| | RespondentId | QuestionId | AnswerValue | ColumnName | |======================================================| | P123 | 1 | Y | CanBathe | |------------------------------------------------------| | P123 | 2 | 3 | TimesADay | |------------------------------------------------------| | P123 | 3 | 1.00 | SoapPrice | |------------------------------------------------------| | P465 | 1 | Y | CanBathe | |------------------------------------------------------| | P465 | 2 | 1 | TimesADay | |------------------------------------------------------| | P465 | 3 | 0.99 | SoapPrice | |------------------------------------------------------| | P901 | 1 | N | CanBathe | |------------------------------------------------------| | P901 | 2 | 0 | TimesADay | |------------------------------------------------------| | P901 | 3 | 0.00 | SoapPrice | |------------------------------------------------------| 我想将行翻转为列,以便此表如下所示: |=================================================| | RespondentId | CanBathe | TimesADay | SoapPrice | |=================================================| | P123 | Y | 3 | 1.00 | |-------------------------------------------------| | P465 | Y | 1 | 0.99 | |-------------------------------------------------| | P901 | N | 0 | 0.00 | |-------------------------------------------------| (这里的示例数据是任意组成的,所以很傻) 源表是一个临时表,大约有70,000行. 更新 >我甚至不知道PIVOT是否是正确的选择. 提前致谢. 解决方法如果您使用PIVOT,则需要使用聚合函数.但是,由于您的(RespondentId,QuestionId)组合是唯一的,因此您的“组”将只有一行,因此您可以使用MIN()作为聚合函数:SELECT RespondentId,CanBathe,TimesADay,SoapPrice FROM (SELECT RespondentId,ColumnName,AnswerValue FROM MyTable) AS src PIVOT (MIN(AnswerValue) FOR ColumnName IN(CanBathe,SoapPrice)) AS pvt 如果一个组只包含一行,则MIN(value)= value,或换句话说:聚合函数成为标识函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |