2009-10-21 58 views
0

我有兩個表;潛在客戶,領土和推薦人。我如何動態調整

鉛的列:

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做到這一點,但是,我明白我必須在代碼中明確指出Referrers。有什麼方法可以執行某種動態數據透視表,它會根據Referrer中的行數添加額外的列嗎?

我需要在SP內部使用動態SQL嗎?

回答

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的方括號列表,如果你想他們是動態。