【发布时间】:2022-01-02 08:56:29
【问题描述】:
我有一张这样的桌子:
我想将表结构更改为这种格式:
我使用了这个查询:
Declare @SQL varchar(max) = Stuff((Select Distinct ',' + QuoteName([Q]) Frommytable Order by 1 For XML Path('')),1,1,'')
Select @SQL = 'Select [user],' + @SQL + '
From mytablle
Pivot ( sum(Answer) For [Q] in (' + @SQL + ') ) p'
Exec(@SQL);
但它不起作用,因为我们不能对 [Answer] 使用 sum 函数(它是字符串)。 你对这个问题的指导是什么?
【问题讨论】:
-
好吧,如果它是一个字符串,那么你想要什么聚合?也许
MAX?您使用的是哪个版本的 SQL Server? -
请避免发布images的数据,我们无法从图像中剪切和粘贴,示例数据在您的问题中应该是consumable text,最好是create 和 insert 语句,或者DB<>Fiddle
-
是的。使用
MIN或MAX函数应该可以解决问题。 -
这能回答你的问题吗? SQL Server - PIVOT on CASE statement
-
我的数据是字符串!最小值或最大值不适用于它。我只想要数据。我的问题类似于 SQL Server - PIVOT on CASE 语句,但我的数据不是数字,所以我们不能使用数值函数
标签: sql-server tsql pivot-table unpivot