2017-10-26 20 views
0

私のコードは以下のようになります。SQLで複数の行を1つの列に結合するにはどうすればよいですか?

以下のような結果と
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_ID異なるとPROC_CODEがそれぞれAccount IDのために1行に移入するために得ることができますか?

+1

[複数のMySQL行を1つのフィールドに連結できますか?](https://stackoverflow.com/questions/276927/can-i-concatenate-multiple-mysql-rows-into-one-field) –

+0

出力がどのように見えるかの例を挙げてください。 – Cfreak

答えて

0

は、必要なタスクを達成します。

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; 

(2つのコードを除く)他のすべての列は、特定のアカウントIDのための各行の同じ値を持つ場合は、唯一の解決策の上使用してください。

希望すると助かります!

+0

期待どおりに機能していますか? –

関連する問題