0

我的问题很简单:

我一直在尝试将表格的输出从

1 a
1 b     into    1 a b c
1 c

2 d
2 e     into    2 d e f
2 f

该表将始终具有 3 行的集合,这些行将成为具有 4 列的表,如上所示。

我尝试循环并卡住了......</p>

编辑:适用于 SQL_SERVER

4

2 回答 2

0

您可以使用FOR XML PATH构造来模拟 MySQL,GROUP_CONCAT如下所示:

select 
    ID, 
    stuff((select ' ' + Value 
           from YourTable t2 where t1.ID = t2.ID 
           for xml path('')),
          1,2,'') [Values]
from YourTable t1
group by ID

关于该主题的其他答案:

于 2013-07-01T15:53:00.880 回答
0

对于 MY_SQL

SELECT A, group_concat(B SEPARATOR " ") as BResult
FROM TABLE
GROUP BY A
  • 对于 ORACLE,如果 B 的顺序很重要,请查看 List_Agg 或 WM_CONCAT 或 over order by。
  • 对于 SQL SERVER,请查看 XML 路径。

但是,如果您只是想将行转换为列...

如果您的 dbms 支持,您可以使用 cte。你可以看看支点。如果您的 rdbms 支持它。

于 2013-07-01T15:47:20.373 回答