2009-10-21 4 views
0

두 개의 테이블이 있습니다. 리드, 테리토리 및 리퍼러. 동적으로 피벗하는 방법

ID, Name, TerritoryId

추천자 갖는다 :

ID, LeadId, Name

테리토리 가지고

ID and Name

리드 항상 임의로 추천자 관련있는 영역 및 리드에 관한

납 열을 갖는다.

리드 및 리퍼러 레코드가 정기적으로 삽입됩니다 (리퍼러는 자주 사용하지 않음). I 출력이 같이 보입니다의 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의 행 수에 따라 추가 열을 추가하는 일종의 동적 피벗을 수행 할 수있는 방법이 있습니까?

SP에서 동적 SQL을 사용해야합니까? 이 같은

답변

0

뭔가 : 지금까지 내가 추천을 명시 적으로 지정되어야 할 것입니다 볼 수 있습니다, 그래서 당신이 그 (것)들을 동적하기를 원한다면 당신은 SP에서 사각 괄호 목록을 생성 할 것 같은

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 

.