使用 PIVOT 显示所有 varchar 值

Show all varchar values with PIVOT

我需要用 pivot 显示所有 varchar 值,但我不确定这是否可行?

我有 OCCUPATIONS table:

-----------+------------+
|   NAME    | OCCUPATION |
+-----------+------------+
| Eve       | Actor      |
| Jennifer  | Actor      |
| Ketty     | Actor      |
| Samantha  | Actor      |
| Aamina    | Doctor     |
| Julia     | Doctor     |
| Priya     | Doctor     |
| Ashley    | Professor  |
| Belvet    | Professor  |
| Britney   | Professor  |
| Maria     | Professor  |
| Meera     | Professor  |
| Naomi     | Professor  |
| Priyanka  | Professor  |
| Christeen | Singer     |
| Jane      | Singer     |
| Jenny     | Singer     |
| Kristeen  | Singer     |
+-----------+------------+

数据透视查询:

    select NAME, OCCUPATION from OCCUPATIONS 
    ) t
    PIVOT( MAX(NAME) FOR OCCUPATION IN ([Doctor], [Professor], [Singer], [Actor])
    ) as PIVOT_TABLE;

查询结果:

+--------+-----------+----------+----------+
| Doctor | Professor |  Singer  |  Actor   |
+--------+-----------+----------+----------+
| Priya  | Priyanka  | Kristeen | Samantha |
+--------+-----------+----------+----------+

上面的查询在每列中只给出了 1 条记录,但我想获取所有记录。

您需要一个额外的列,例如ROW_NUMBER():

SELECT RN, [Doctor], [Professor], [Singer], [Actor]
FROM  
(SELECT NAME, OCCUPATION ,ROW_NUMBER() OVER (PARTITION BY OCCUPATION ORDER BY NAME ) as RN
FROM OCCUPATIONS 
) t
PIVOT( MAX(NAME) FOR OCCUPATION IN ([Doctor], [Professor], [Singer], [Actor])
) as PIVOT_TABLE;