Sql server 如何在SQL中同时使用pivot和GroupBy?

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

我想得到以列的形式成行的结果。我是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(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