【问题标题】:Combine all selected columns to one column将所有选定的列合并为一列
【发布时间】:2018-12-24 19:52:31
【问题描述】:

我已经没有解决方案来组合下表。请协助。谢谢。

InvoiceNo FileNo
00001      A001
00002      A001

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

InvoiceNo       FileNo
00001,00002      A001

非常感谢您的帮助!

【问题讨论】:

  • 如果是sql server,你可以使用pivoting
  • 你的 dbms 是什么?

标签: sql sql-server group-concat


【解决方案1】:

Sql-server 版本

你可以使用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 |

【讨论】:

    【解决方案2】:

    如果是mysql则使用group_concat函数

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 2020-05-01
      相关资源
      最近更新 更多