あるテーブル [responses] にコンマ区切りフィールドがあり、そのコンマ区切りフィールド [suppliers] に存在できるすべてのオプションを含む別のテーブルがあります。
[responses] テーブルの 1 つのレコード列「suppliers」の内容の例を次に示します。
Supplier A, Supplier B, Supplier C, Supplier D
等々。
最終的には、このように降順ですべての回答のリストをカウントとともに表示できるようにしたいと考えています。
- サプライヤー C: 16
- サプライヤーB: 14
- サプライヤー D: 8
- 等
私は現在、これらの数値を不格好な手動のサブ選択で取得していますが、これは希望するレイアウトのデータを取得せず、約 300 のサプライヤーがいるためにかなり長くなります。
select
(select count(*) from dbo.responses) as TotalCount,
(select count(*) from dbo.responses where [suppliers] like '%Supplier C%') as [Supplier C],
(select count(*) from dbo.responses where [suppliers] like '%Supplier B%') as [Supplier B]
データがどのように入力されるか (コンマ区切りフィールド) を完全に制御することはできません。また、[suppliers] テーブルは手動で作成したもので、何らかの方法でそれらのアイテムをループしてカウントを取得できることを望んでいました。
この結果を最も多く選択されたサプライヤーのソート可能なリストにする方法についてのアイデアはありますか?
ありがとう
私は非常に近づいているように感じますが、現在は「サプライヤー」が選択された唯一の回答であるレコードのみを数えており、コンマ区切りリストの一部であるレコードを集計していないため、コンマに関する構文。
SELECT r.suppliers, COUNT(*)
FROM responses AS r JOIN
Suppliers s ON ','+CompanyName+',' LIKE '%,'+r.suppliers+',%'
GROUP BY r.suppliers