如何动态转动

时间:2009-10-21 16:55:53

标签: pivot pivot-table dynamic-pivot

我有两张桌子;潜在客户,地区和推荐人。

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?

1 个答案:

答案 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中生成方括号列表。