基于数据的透视
Pivot based on Data
如何实现此输出
表名:测试
Code Description
A Apple
B Ball
C Cat
输出:查询
Apple Ball Cat
A B C
如果您正在使用 SQL 服务器意味着在 PIVOT table 下使用:
CREATE TABLE #Table(Code VARCHAR(1), Description VARCHAR(15) )
INSERT INTO #Table(Code , Description )
SELECT 'A','Apple' UNION ALL
SELECT 'B','Ball' UNION ALL
SELECT 'C','Cat'
SELECT *
FROM
(
SELECT Code , Description
FROM #Table
) A
PIVOT
(
MAX(Code) FOR Description IN ([Apple],[Ball],[Cat])
)pvt
编辑:对于动态枢轴
DECLARE @DynamicString VARCHAR(MAX) = '' , @DynamicPvt VARCHAR(MAX) = ''
SELECT @DynamicString =
(
SELECT STUFF ((SELECT ',' + RTRIM(Description) FROM #Table FOR XML
PATH('')),1,1,'')
)
SET @DynamicPvt = 'SELECT *
FROM
(
SELECT Code , Description FROM #Table
)A
PIVOT
(
MAX(Code) FOR Description IN ('+@DynamicString+')
)
PVt'
EXEC (@DynamicPvt)
如何实现此输出
表名:测试
Code Description
A Apple
B Ball
C Cat
输出:查询
Apple Ball Cat
A B C
如果您正在使用 SQL 服务器意味着在 PIVOT table 下使用:
CREATE TABLE #Table(Code VARCHAR(1), Description VARCHAR(15) )
INSERT INTO #Table(Code , Description )
SELECT 'A','Apple' UNION ALL
SELECT 'B','Ball' UNION ALL
SELECT 'C','Cat'
SELECT *
FROM
(
SELECT Code , Description
FROM #Table
) A
PIVOT
(
MAX(Code) FOR Description IN ([Apple],[Ball],[Cat])
)pvt
编辑:对于动态枢轴
DECLARE @DynamicString VARCHAR(MAX) = '' , @DynamicPvt VARCHAR(MAX) = ''
SELECT @DynamicString =
(
SELECT STUFF ((SELECT ',' + RTRIM(Description) FROM #Table FOR XML
PATH('')),1,1,'')
)
SET @DynamicPvt = 'SELECT *
FROM
(
SELECT Code , Description FROM #Table
)A
PIVOT
(
MAX(Code) FOR Description IN ('+@DynamicString+')
)
PVt'
EXEC (@DynamicPvt)