2

各グループの各注文レコードが行に配置される、以下のような注文テーブルがあります。ここで、これをコンパクトにして、1 つのグループのすべての注文を 1 つのセルに入れ、「,」で区切ってグループごとにデータを集計したいと思います (結果のテーブルは元のテーブルの下にあります)。

これをSQLで実現する方法を教えてください。

どうもありがとう!

元のテーブルは次のとおりです。

Group    Order
1        a
1        b
1        c
2        d
2        e
3        f

変換されたコンパクトなテーブルは次のとおりです。

Group    Orders
1        a,b,c
2        d,e
3        f
4

1 に答える 1

3

これは役に立ちます

T-Sql (Sql Server 2005 以降)

Declare @t Table([Group] Int, [Order] Varchar(20))
Insert Into @t Values(1,'a'),(1,'b'),(1,'c'),(2,'d'),(2,'e'),(3,'f')

Select [Group],
    Orders = Stuff((Select ',' + Cast([Order] As Varchar(100))
     From @t t2 Where t2.[Group] = t1.[Group]
     For Xml Path('')),1,1,'')
From @t t1
Group By t1.[Group]

Pl/Sql オラクル 11g R2 +

SELECT [Group],ListAgg([Order],',') Within Group (Order By [Group]) Orders
FROM ORDER
GROUP BY [Group];

Pl/Sql オラクル 10g +

SELECT [Group],WM_Concat([Order],',') Orders
FROM ORDER
GROUP BY [Group];

ここに画像の説明を入力

于 2012-11-28T02:40:49.793 に答える