gpt4 book ai didi

sql - 当列是字符串数据类型时,在 mssql 中使用 'Pivot' 将行转换为列

转载 作者:行者123 更新时间:2023-12-02 12:05:49 25 4
gpt4 key购买 nike

我需要知道如果没有要使用的聚合函数,MS SQL 中的“pivot”是否可以用于将行转换为列。我看到很多只带有聚合函数的例子。我的字段是字符串数据类型,我需要将此行数据转换为列数据。这就是我写这个问题的原因。我只是用“case”来做的。谁能帮助我......提前致谢。

最佳答案

您可以使用 PIVOT来执行此操作。执行数据透视表时,您可以通过以下两种方式之一进行操作:使用静态数据透视表(您将对要转换的行进行编码)或动态数据透视表(将在运行时创建列列表):

静态枢轴(参见SQL Fiddle with a Demo):

SELECT *
FROM
(
select empid, wagecode, amount
from t1
) x
pivot
(
sum(amount)
for wagecode in ([basic], [TA], [DA])
) p

动态枢轴:

DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(wagecode)
FROM t1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')

set @query = 'SELECT empid, ' + @cols + ' from
(
select empid, wagecode, amount
from t1
) x
pivot
(
sum(amount)
for wagecode in (' + @cols + ')
) p '

execute(@query)

这两者都会给你相同的结果

关于sql - 当列是字符串数据类型时,在 mssql 中使用 'Pivot' 将行转换为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10976585/

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