2013-04-22 4 views
0

Таблица Шаблон имеет один столбец со следующими значениями:разделенных запятыми рассчитывать значения

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) 

Проблема в том, что счет неверен как для примера le my pattern имеет% 50% и% 51%, и поэтому номер строки 2 из таблицы B следует пересчитывать дважды, однако мой запрос - только один раз, как это сделать?

EDIT:
Я забыл добавить DISTINCT в моем первоначальном запросе, который вызывает вопрос:

SELECT Count(Distinct Subscriberid) 
FROM TABLEB t WITH (nolock) 
JOIN Patterns p ON (t.NewsletteridPattern LIKE p.pattern) 
+0

Этот запрос правильно подсчитывает строки - см. Эту демонстрацию - http://sqlfiddle.com/#!3/b9cd3/4 – Taryn

ответ

1

Я высмеивал свои данные, как например:

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

Я обновил свой вопрос и удалил отдельный ответ сам по себе. Благодаря ! –

Смежные вопросы