【问题标题】:Transpose rows to columns with criteria [duplicate]将行转置为具有条件的列[重复]
【发布时间】:2015-05-06 14:59:56
【问题描述】:

我有一张表,其中两列中包含员工及其位置,我希望仅在左侧列中出现一次位置和员工,直到该位置没有更多员工为止。员工人数因地点而异。

下面是表格示例,然后是我想看的内容

名称位置 MARILIS ADAMS ST 娱乐中心 埃迪亚当斯街娱乐中心 卡曼市中心办公室 多萝西市中心办公室 迈克尔市中心办公室 位置 EMP1 EMP2 EMP3 ADAMS ST 娱乐中心 MARILIS EDDIE 市中心办公室卡曼多萝西迈克尔

我尝试过使用交叉表,但显然不能这样。如果有人可以帮助我,那就太好了。

【问题讨论】:

  • MS Access 已经支持 Pivot 查询很长时间了(我在 20 年前就在使用它们)。

标签: sql sql-server vba ms-access ms-access-2010


【解决方案1】:

您可以使用递归CTE 对位置分区进行编号,然后使用PIVOT 对数据进行编号:

;WITH CTE AS (
SELECT NAME, LOCATION, 'EMP' + CAST(ROW_NUMBER() OVER(PARTITION BY LOCATION ORDER BY NAME ASC) AS VARCHAR) AS [EMP]
FROM TABLE1)
SELECT LOCATION, [EMP1], [EMP2], [EMP3]
FROM CTE
PIVOT(MAX(NAME) FOR [EMP] IN ([EMP1], [EMP2], [EMP3])) PIV

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多