Sql server 如何在SQL中同时使用pivot和GroupBy?
我想得到以列的形式成行的结果。我是SQL中的pivot新手,想知道如何在下面的情况下应用pivot 代码: 预期结果:Sql server 如何在SQL中同时使用pivot和GroupBy?,sql-server,tsql,sql-server-2008,sql-server-2012,Sql Server,Tsql,Sql Server 2008,Sql Server 2012,我想得到以列的形式成行的结果。我是SQL中的pivot新手,想知道如何在下面的情况下应用pivot 代码: 预期结果: NAME 1 2 3 A XX YY ZZ B XX PP NULL C GH JU GQ 这是一种方式。 只需如下图所示旋转。将当前查询封装为CTE或派生表 SELECT * FROM ( SELECT T.NAME, T.CODE, RN FROM ( SELECT NAME, CODE, SUM(PROFI
NAME 1 2 3
A XX YY ZZ
B XX PP NULL
C GH JU GQ
这是一种方式。
只需如下图所示旋转。将当前查询封装为CTE或派生表
SELECT *
FROM
(
SELECT T.NAME, T.CODE, RN
FROM
(
SELECT NAME, CODE, SUM(PROFIT),
ROW_NUMBER() OVER (PARTITION BY NAME ORDER BY NAME, SUM(PROFIT) DESC, CODE)RN
FROM TABLE1
GROUP BY NAME, CODE
)T
WHERE RN <= 3
) D
PIVOT
(
MAX(CODE)
FOR RN IN ([1] , [2], [3])
) P
请给我们您的实际代码,或者至少是可以运行的代码?一些示例数据也有助于解决技术上不需要WHERE过滤器的问题。值未列在紧靠in之前的列的PIVOT子句中,但仍将放弃该值。
NAME 1 2 3
A XX YY ZZ
B XX PP NULL
C GH JU GQ
SELECT *
FROM
(
SELECT T.NAME, T.CODE, RN
FROM
(
SELECT NAME, CODE, SUM(PROFIT),
ROW_NUMBER() OVER (PARTITION BY NAME ORDER BY NAME, SUM(PROFIT) DESC, CODE)RN
FROM TABLE1
GROUP BY NAME, CODE
)T
WHERE RN <= 3
) D
PIVOT
(
MAX(CODE)
FOR RN IN ([1] , [2], [3])
) P