mysql - 如何在 SQL 中将多行合并为一列?

标签 mysql

我的代码如下所示:

select distinct
    HSP_ACCOUNT_ID
    ,TOT_ACCT_BAL
    ,DISCH_DATE_TIME
    ,UB_REV_CODE_ID
    ,PROC_CODE
    ,DATEDIFF(dd,act.DISCH_DATE_TIME,GETDATE()) as "Aging"

from HSP_ACCOUNT 

where 
    SERV_AREA_ID = 10
    and ACCT_BILLSTS_HA_C = '3' --Billed
    and DISCH_DATE_TIME >= '20171024'
    and TOT_ACCT_BAL is not null
    and TOT_ACCT_BAL <> 0

结果如下:

HSP_ACCOUNT_ID  TOT_ACCT_BAL    DISCH_DATE_TIME UB_REV_CODE_ID  PROC_CODE Aging
117244          830.03          10/24/2017  320         32074230  2
117244          830.03          10/24/2017  440         44008996  2
117244          830.03          10/24/2017  440         44008997  2
117244          830.03          10/24/2017  440         44008998  2
117244          830.03          10/24/2017  444         44492611  2

如何将所有不同的 UB_REV_CODE_IDPROC_CODE 填充到每个帐户 ID 的一行上?

最佳答案

Group_concat() 将实现所需的任务。

select distinct
    HSP_ACCOUNT_ID
    ,TOT_ACCT_BAL
    ,DISCH_DATE_TIME
    ,Group_concat(Distinct UB_REV_CODE_ID separator ' ')
    ,Group_concat(Distinct PROC_CODE separator ' ')
    ,DATEDIFF(dd,act.DISCH_DATE_TIME,GETDATE()) as "Aging"

from HSP_ACCOUNT 

where 
    SERV_AREA_ID = 10
    and ACCT_BILLSTS_HA_C = '3' --Billed
    and DISCH_DATE_TIME >= '20171024'
    and TOT_ACCT_BAL is not null
    and TOT_ACCT_BAL <> 0
Group by HSP_ACCOUNT_ID;

注意:仅当特定帐户 ID 的所有其他列(2 个代码除外)每行中具有相同的值时,您才应使用上述解决方案。

希望对你有帮助!

关于mysql - 如何在 SQL 中将多行合并为一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46960966/

相关文章:

php - 使用单个输入将 2 个 csv 文件上传到 mysql 表中?这是可能的?

mysql - 仅使用一张表来存储多种类型的关系,是否高效?

mysql - 当字段的计数为零时,如何通过聚合查询从组返回的值为零(0)?

php - 突出显示 Mysql 搜索。但 preg_replace 不起作用?

mysql - 基于mySql中列值的一部分分组

php - 如何实现博客文章的正文以获得换行符

mysql - 为另一列的数组元素选择一列的公共(public)值

mysql - 添加 ORDER BY 时查找员工最新事件很慢

mysql - 在 MySQL 中创建 INTERSECT 查询

android - SQLITE CREATE VIEW JOIN 的语法问题