0

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

铅有列:

ID、名称、TerritoryId

推荐人有:

ID、LeadId、名称

领土有:

身份证和姓名

潜在客户始终与区域相关,并且潜在客户可以选择与推荐人相关。

定期插入潜在客户和推荐人记录(推荐人频率较低)。我想在 GridView 中输出一个报告,如下所示:

领土 | 潜在客户数量 | Ref1 潜在客户数 | Ref2 潜在客户数 | Ref3 潜在客户数

利兹 10 1 7 2

埃克塞特 43 9 21 8

ETC...

好的,所以问题是,我想按地区分组并计算每个地区的潜在客户......这很好:-

选择 t.Name, COUNT(1)
来自 Territory t 内部连接 ​​Lead l on l.TerritoryID = t.Id
按 t.Name 分组

但现在我想按推荐人细分计数。

我知道我可以通过 PIVOT 部分地做到这一点,但是,我知道我必须在代码中明确声明引用者。有没有办法执行某种动态透视,根据引用者中的行数附加额外的列?

我必须在 SP 中使用动态 SQL 吗?

4

1 回答 1

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

于 2009-10-22T09:42:56.437 回答