gpt4 book ai didi

sql-server - SQL:将多行结果显示为 1 行

转载 作者:行者123 更新时间:2023-12-01 23:56:18 24 4
gpt4 key购买 nike

全部,

不太确定如何执行以下操作。自学 SQL,使用 SQL Server 2008 R2。请注意,虽然我可以执行我喜欢的所有选择查询,但我没有在数据库中创建删除表的权限。

在我的数据库中,有一个名为“消息”的表。每条消息都是一个三字母代码(例如,“AAA”、“AAB”等)。每个主键可以有任意数量的消息。因此,出于本练习的目的,假设表格如下所示:

1 AAA
1 AAB
1 AAC
2 AAA
2 CCC

等等,

我想要得到的输出是将这个水平数据转换为垂直数据,这样我就可以得到这个:

1 AAA AAB AAC
2 AAA CCC

如果相关,数据库还包含不同表中所有可能消息代码的列表。

我怀疑正确答案涉及 PIVOT,但我不太确定如何到达那里。我找到的最接近的是:How to pivot table with T-SQL?但是,(a) 我不确定如何使它适应我的情况,并且 (b) 它似乎需要创建一个表。

提前谢谢你。

最佳答案

由于您的问题已被编辑,包括两个查询:

原始问题中查询预期结果:

;WITH CTE AS (
SELECT T2.ID, STUFF(
(SELECT ' '+ T1.Code
FROM TableName T1
WHERE T1.ID = T2.ID
FOR XML PATH('')),1,1,'') AS CSV
FROM TableName AS T2
GROUP BY T2.ID)

SELECT TOP 1 STUFF(
(SELECT ' ' + s.Temp
FROM (SELECT CONVERT(varchar(10),ID)+' '+CSV as Temp
FROM CTE) s
FOR XML PATH('')),1,1,'') AS Result

结果:

RESULT
1 AAA AAB AAC 2 AAA CCC

SQL Fiddle 中查看结果.

查询已编辑问题中的预期结果:

SELECT T2.ID, STUFF(
(SELECT ' '+ T1.Code
FROM TableName T1
WHERE T1.ID = T2.ID
FOR XML PATH('')),1,1,'') AS Codes
FROM TableName AS T2
GROUP BY T2.ID

结果:

ID  CODES
1 AAA AAB AAC
2 AAA CCC

SQL Fiddle 中查看结果.

关于sql-server - SQL:将多行结果显示为 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23502267/

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