2016-06-23 16 views
0

何か助けていただければ幸いです。私は次のクエリを持っており、データをカンマで区切って複数の行を1つの行に結合するように変更する際に助けが必要です。私はあなたの参照のためにimageを添付しました。SQL Serverは複数の行を1つの行にまとめます

select CT_ID 
    , Acct_Group 
    , (source + ' - ' 
     + cast(count(*) as nvarchar(20)) 
     +' account groups have total amounts in file A more or less than 25% of File B AMount' 
     ) as Error 
from (
    select CT_ID 
      , source 
      , acct_group 
      , sum(balance) as Balance 
      , sum(k_new_balance) as K_New_Balance 
    from tblGroups 
    group by acct_group, source, CT_ID 
    ) as x 
where abs((K_New_Balance - Balance)/nullif(Balance, 0)) >=0.25 
group by source, CT_ID,Acct_group 
order by CT_ID 
+0

これにピボットを使用できます。 – Kostya

+0

私に例を教えてもらえますか? – Sai

答えて

0

あなたが好き希望の出力を得るために、ROW_NUMBERを使用することができ、CTEまたは一時テーブルに出力パット場合、これが役立つかもしれない:

select * into #T from (
    select 'l1' CT_ID , 'ab' Acc_Group union 
    select 'l1' CT_ID , 'rr' Acc_Group union 
    select 'pl1' CT_ID , 'ab' Acc_Group union 
    select 'pl1' CT_ID , 'rr' Acc_Group union 
    select 'pl1' CT_ID , 'dd' Acc_Group) x 



    select x.CT_ID , x.Acc_Group + isnull(','+y.Acc_Group,'') + isnull(','+z.Acc_Group ,'') Acc_Group,ct.ct 

    from (select * ,row_number() over (partition by CT_ID order by Acc_Group) rowid from #T) x 
    left join (select * ,row_number() over (partition by CT_ID order by Acc_Group) rowid from #T) y 
    on x.rowid = y.rowid -1 
    and x.CT_ID = y.CT_ID 
    left join (select * ,row_number() over (partition by CT_ID order by Acc_Group) rowid from #T) z 
    on x.rowid = z.rowid -2 
    and x.CT_ID = z.CT_ID 
    left join (select CT_ID,count(*) ct from #T group by CT_ID) ct 
    on ct.CT_ID = x.CT_ID 
    where x.rowid = 1 
0

を「SQL文字列の連結」

のためのGoogle検索を実行します。

最初の結果のいずれかから例:https://sqlandme.com/2011/04/27/tsql-concatenate-rows-using-for-xml-path/

SELECT  CAT.Name AS [Category], 
      STUFF(( SELECT ',' + SUB.Name AS [text()] 
       — Add a comma (,) before each value 
        FROM Production.ProductSubcategory SUB 
        WHERE 
        SUB.ProductCategoryID = CAT.ProductCategoryID 
        FOR XML PATH('') — Select it as XML 
        ), 1, 1, '') 
        — This is done to remove the first character (,) 
        — from the result 
     AS [Sub Categories] 
FROM Production.ProductCategory CAT 

基本的に、サブクエリの結果を区切りリスト(この場合はカンマ)として結合することができます。次に、すべてのコードを選択するためにサブクエリに含めることができます。

関連する問題