33

テーブルからデータを収集し、レポートのデータを表示するクエリに取り組んでいます。

データは次のようになります。

Player Score
001      10
001      20
002      20
002      20
001      10
002      10
003      20
002      20
001      10

このように表示させたい

Player Score
001    10,20
002    10,20
003    20

しかし、私が得るのは、このようなスコア列のすべてのデータの結合リストだけです

Player Score
001    10,20,10,10
002    20,20,10,20
003    20

これを機能させる方法を知っている人はいますか?

4

4 に答える 4

56

SQL Server の場合、以下を使用できます。

select player,
  stuff((SELECT distinct ', ' + cast(score as varchar(10))
           FROM yourtable t2
           where t2.player = t1.player
           FOR XML PATH('')),1,1,'') 
from yourtable t1
group by player
于 2012-09-28T18:22:31.827 に答える
8

別の RDBMS に関しては少し遅く、少し話題から外れていますが、Postgres でこの問題の解決策を探しているこのスレッドを見つけました。私はそれを見つけたので、他の誰かが Pg でこの問題を解決する必要がある場合:

SELECT string_agg(DISTINCT <column>,'delimiter') FROM <table> GROUP BY <column2>
于 2013-04-12T19:24:25.073 に答える