将行转置为具有条件的列[重复]

Posted

技术标签:

【中文标题】将行转置为具有条件的列[重复]【英文标题】: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 年前就在使用它们)。 【参考方案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

【讨论】:

以上是关于将行转置为具有条件的列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将行转置为不聚合的列

mysql 将行转置为列

将行转置为单列

SQL 将行转置为列

Tsql 将行转置为列,按列分组

Oracle SQL Developer:如何使用 PIVOT 函数将行转置为列