逗号分隔值计数
问题描述:
表图案具有以下值的单柱:逗号分隔值计数
NewsletteridPattern
------------
%50%
%51%
表B具有以下的值:
SubscriberId NewsletterIdCsv
------------ -----------------
47421584 51
45551047 50,51
925606902 50
47775985 51
我有以下查询基本上计数逗号分隔值通过使用模式:
SELECT *
FROM TABLEB t WITH (nolock)
JOIN Patterns p ON (t.NewsletteridPattern LIKE p.pattern)
问题是,计数是不正确的,例如,我的模式有%50%和%51%,因此表B中的第2行应计为两次,但是我的查询只有一次,我该如何反应?
编辑:
我忘了,我这是导致该问题的原始查询添加DISTINCT:
SELECT Count(Distinct Subscriberid)
FROM TABLEB t WITH (nolock)
JOIN Patterns p ON (t.NewsletteridPattern LIKE p.pattern)
答
我嘲笑你的数据,例如:
create table #pattern (pattern varchar(50))
insert into #pattern values ('%50%')
insert into #pattern values ('%51%')
create table #subscriber (id varchar(50), newsletter varchar(50))
insert into #subscriber values ('47421584', '51')
insert into #subscriber values ('45551047', '50,51')
insert into #subscriber values ('925606902', '50')
insert into #subscriber values ('47775985', '51')
SELECT pattern, COUNT(*) AS Counter
FROM #subscriber t WITH (nolock)
JOIN #pattern p ON (t.newsletter LIKE p.pattern)
GROUP BY pattern
而我的选择声明返回:
pattern Counter
------- -------
%50% 2
%51% 3
你最终的目标是什么?你只关心按模式计算行数,还是试图按模式选择行?
+0
我更新了我的问题,并删除不同的是答案本身形成计数。谢谢 ! – 2013-04-22 19:57:30
此查询正确计数行 - 看到这个演示 - http://sqlfiddle.com/#!3/b9cd3/4 – Taryn 2013-04-22 17:09:46