我在一个表 [responses] 中有一个逗号分隔字段,我有另一个表,其中包含该逗号分隔字段 [供应商] 中可以存在的所有选项。
下面是 [responses] 表中一个记录列“供应商”的内容示例:
Supplier A, Supplier B, Supplier C, Supplier D
等等。
我最终希望能够查看所有答案的列表,如下所示:
- 供应商 C:16
- 供应商 B:14
- 供应商 D:8
- ETC
我目前正在通过笨重的手动子选择获得这些数字,它没有在我想要的布局中获得数据,并且由于我们有大约 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