2017-12-27 5 views
0

私はclaim.filesという名前のテーブルに2つの列を持ちます。最初の列は「claim」という名前で、請求ファイル番号が含まれています。 4355、6444、7674などであり、2番目のものは「パートナー」という名前で、前者のパートナーコードが含まれています。 8393、4783、38283. クレームファイル番号は一意ですが、すべてのクレームファイルにはパートナーが増える可能性がありますので、クレームファイルごとにすべてのパートナーをグループ化できるselectを実行します。私がこの「選択クレーム」を実行した場合、クレーム別に(4355,6444,7674)のクレームがグループ化されているクレーム。ファイルのパートナーは、「パートナーが多い場合、クレームを複製します。1つの列のグループパートナー

私は結果は以下のようになりたい:

claim partners 
4355 57878, 45874, 58977 

私は以下のコードを実行した場合、それは私が上記を実行すると、結果はとなります。この方法クレーム番号

select claim, partner from claim.files where claim in (4355, 6444, 7674) group by claim, partner 

を複製します選択

claim partners 
    4355 57878 
    4355 45874 
    4355 58977 
+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very- simple-sql-query – Strawberry

+0

plsが正しいSQL文を投稿します。このsnrは何ですか?グループは、sum()やaverage()のような関数でのみ動作します。 – mbieren

+1

一意であり、どこに画像が入っているのか、クレームがどのように多くのパートナーを持つことができるのか説明してください。 – isaace

答えて

1

claimごとにカンマ区切りを選択する場合は、y OUはgroup_concatを使用することができます。

select claim, group_concat(partner separator ',') as partners 
from files 
where snr in (4355, 6444, 7674) 
group by claim; 

Demoを:

| claim |   partners | 
|-------|-------------------| 
| 4355 | 57878,45874,58977 | 

更新:あなたはSQLサーバーを使用している場合は、代わりにこれを行うことができ

SELECT 
    f1.claim, 
    STUFF((
      SELECT ',' + CAST(f2.partner AS NVARCHAR(50)) 
      FROM files as f2 
      where snr in (4355, 6444, 7674) 
      and f1.claim = f2.claim 
      FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS partners 
FROM files as f1 
where snr in (4355, 6444, 7674) 
group by f1.claim; 

からSQL Server demo

| claim |   partners | 
|-------|-------------------| 
| 4355 | 57878,45874,58977 | 
+0

SQLクライアントがありません – haxx

+1

@haxx SQLクライアントはどういう意味ですか?どのように動作しません?予想される結果を提供していませんか?またはあなたはエラーを持っていますか? –

+0

エラーが発生しました:エラー:[SQL0204] * LIBLタイプのGROUP_CONCAT * Nが見つかりません。 SQLState:42704 ErrorCode:-204 – haxx

関連する問題