我有两张桌子;潜在客户,地区和推荐人。
Lead有列:
ID, Name, TerritoryId
推荐人有:
ID, LeadId, Name
Territory有:
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部分地做到这一点,但是,我知道我必须在代码中明确说明Referrers。有没有办法执行某种动态数据透视表,根据Referrer中的行数追加其他列?
我是否必须在SP中使用动态SQL?
答案 0 :(得分:0)
类似的东西:
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中生成方括号列表。