【问题标题】:Show all varchar values with PIVOT使用 PIVOT 显示所有 varchar 值
【发布时间】:2020-12-10 18:48:13
【问题描述】:

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

我有OCCUPATIONS 表:

-----------+------------+
|   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 条记录,但我想获取所有记录。

【问题讨论】:

  • 不要发布数据图片,我们不能消费它。花点时间以可消耗的格式发布它,最好是 DDL 和 DML 语句,但是,如果不是,则以表格格式text 发布。请不要指望这里的用户会为您转录您的数据。另外,您对此的预期结果是什么?
  • 此外,该查询似乎不完整。第 2 行的 t 之前有一个右括号 ()),但是没有左括号 (()。
  • “我想得到所有” - 这是什么意思?你的意思是你仍然想得到 4 个单元格,但是所有的名字,用逗号分隔,或者别的什么?请同时包含所需的输出
  • 旁注:一年多来,SQL Server 2008 完全不受支持,您应该认真考虑完成升级路径。

标签: sql sql-server sql-server-2008 pivot


【解决方案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;

【讨论】:

    猜你喜欢
    • 2017-01-03
    • 1970-01-01
    • 2021-07-16
    • 2014-03-05
    • 2012-09-13
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多