将所有选定的列合并为一列

时间:2018-07-17 07:41:40

标签: sql sql-server group-concat

我用完了要合并下表的解决方案。请协助。谢谢。

oauth/authorize

上面是我选择的表格,我想在列表中显示的内容如下所示。

InvoiceNo FileNo
00001      A001
00002      A001

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

SQL服务器版本

您可以使用STUFF功能。

SELECT  STUFF((
          SELECT ',' + InvoiceNo
          FROM T
          FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') as 'InvoiceNo'      ,FileNo
FROM T
GROUP BY FileNo

sqlfiddle:http://sqlfiddle.com/#!18/5028e/8


Oracle版本

您可以使用LISTAGG功能。

SELECT 
    LISTAGG(InvoiceNo, ', ') WITHIN GROUP (ORDER BY InvoiceNo)  InvoiceNo,
    FileNo  
FROM t
GROUP BY FileNo

http://sqlfiddle.com/#!4/5028e/2

[结果]

|    INVOICENO | FILENO |
|--------------|--------|
| 00001, 00002 |   A001 |

答案 1 :(得分:1)

如果mysql,则使用group_concat函数

SELECT FileNo,GROUP_CONCAT(InvoiceNo) as InvoiceNo
FROM your_table
GROUP BY FileNo;