【问题标题】:how can switch column data into row data using sql server [duplicate]如何使用sql server将列数据切换为行数据[重复]
【发布时间】:2013-07-10 16:25:41
【问题描述】:

我有一张这样的桌子:

ID   value
3      1
3      2
3      3
3      4
3      5
3      6

谁能帮我把这个表格转换成格式:

ID  Value
3   1,2,3,4,5,6

【问题讨论】:

  • Google GROUP_CONCAT + 你的 RDBMS 的名称。
  • MySQL、MSSQL、PostgreSQL,还有什么?
  • 那不是行数据,那是一个连接。此外,group_concat 是 SQL Server 上不可用的 MySSL 语句
  • 你已经尝试了什么?我们可以看看你编写的一些 SQL 代码来尝试解决这个问题吗?

标签: sql sql-server


【解决方案1】:
select distinct id, 
stuff((select (','+[value]) from Table1 as t2 where t1.id=t2.id 
for xml path('')),1,1,'') as [values]
from 
    Table1 as t1  

SQLFIDDLE

PS:在示例方案中,值有 varchar() 类型,如果需要,您需要将 numeric 转换为 varchar()。
在 Sql Server 中创建 group_concat 有很多变体,只是另一种组装方式:GROUP_CONCAT string aggregate for SQL Server。我发现它工作得很好。
COALESCE 的另一种方式

DECLARE @values varchar(100)

SELECT @values = COALESCE(@values + ', ', '') + [value]
FROM Table1

SELECT @values  

SQLFIDDLE

【讨论】:

  • 这是否来自上一个答案? stackoverflow.com/questions/111341/…
  • 到处都有大量相同的例子。
  • 那么习惯上放上一个SO答案的链接
  • 另一种将问题标记为重复的方法。只是我无法直接选择和回答。
  • 嗯,我认为很难定义“以前的 SO 答案”......或者我们可以写一个查询来确定它吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 1970-01-01
  • 2015-09-05
  • 2020-11-14
  • 1970-01-01
  • 2013-06-09
相关资源
最近更新 更多