Как динамически поворачиваться - PullRequest
0 голосов
/ 21 октября 2009

У меня есть две таблицы; Ведет, Территории и Реферреры.

Свинец имеет столбцы:

ID, Name, TerritoryId

Рефералы имеют:

ID, LeadId, Name

Территория имеет:

ID and Name

Лидерство всегда относится к территории, и лидирование может дополнительно относиться к Рефереру.

Регулярно вставляются записи потенциальных клиентов и рефереров (рефералы реже). Я хочу вывести отчет в GridView, который выглядит следующим образом:

Territory | Lead Count | Ref1 Lead Count | Ref2 Lead Count | Ref3 Lead Count

Leeds       10            1                7                 2

Exeter     43             9                21                8

etc...

ОК, проблема в том, что я хочу сгруппировать по территориям и подсчитать количество потенциальных клиентов по территории .... это нормально: -

select t.Name, COUNT(1)
from Territory t inner join Lead l on l.TerritoryID = t.Id
group by t.Name

Но теперь я хочу разбить счетчик по рефереру.

Я понимаю, что могу сделать это частично с PIVOT, однако я понимаю, что должен явно указать источники в коде. Есть ли способ выполнить какой-нибудь динамический свод, который добавляет дополнительные столбцы в зависимости от количества строк в Referrer?

Должен ли я использовать динамический SQL внутри SP?

1 Ответ

0 голосов
/ 22 октября 2009

как то так:

select * from (select r.name, t.name as Territory  
from referrers r join Lead l on l.Id = r.leadId
join Territory  t on l. TerritoryID = t.Id) s 
pivot(count(Name) for Name in ([geoff],[fred])) p

Насколько я вижу, источники ссылок должны быть указаны явно, поэтому вам нужно было бы создать квадратный квадратный квадрат в sp, если вы хотите, чтобы они были динамическими.

...