gpt4 book ai didi

sql - 需要在 SQL Server 中透视字符串值

转载 作者:行者123 更新时间:2023-12-03 03:41:24 28 4
gpt4 key购买 nike

我有一个包含值的表格,描述如下:

<表类=“s-表”><标题>职业字符串名称字符串 <正文>开发人员一个开发人员B设计师X编码器是编码器Z

我需要数据透视格式的值:

<表类=“s-表”><标题>设计师开发人员编码员 <正文>X一个是空BZ

谁能帮忙解决这个问题吗?

提前致谢

最佳答案

使用 ROW_NUMBER() 的基本 PIVOT 将为您做一些事情:

SELECT  [Developer],
[Designer],
[Coder]
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY Occupation ORDER BY (SELECT NULL)) RN
FROM #temp
) as t
PIVOT (
MAX(Name) FOR Occupation IN ([Developer],[Designer],[Coder])
) as pvt

输出:

Developer   Designer    Coder
A X Y
B NULL Z

如果职业的数量可能不同,那么您需要动态 SQL:

DECLARE @columns nvarchar(max),
@sql nvarchar(max)

SELECT @columns = (
SELECT DISTINCT ','+QUOTENAME(Occupation)
FROM #temp
FOR XML PATH('')
)

SELECT @sql = N'
SELECT '+STUFF(@columns,1,1,'')+'
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY Occupation ORDER BY (SELECT NULL)) RN
FROM #temp
) as t
PIVOT (
MAX(Name) FOR Occupation IN ('+STUFF(@columns,1,1,'')+')
) as pvt'

EXEC sp_executesql @sql

注意:我使用ORDER BY (SELECT NULL)只是为了获得一些随机排序。最好使用一些实际字段来实现此目的。

关于sql - 需要在 SQL Server 中透视字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39505190/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com