将行转置为具有条件的列[重复]
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
【讨论】:
以上是关于将行转置为具有条件的列[重复]的主要内容,如果未能解决你的问题,请参考以下文章