使用 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;
我需要用 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;