문제

나는 두 개의 테이블이 있습니다. 리드, 영토 및 추천자.

리드에는 열이 있습니다.

ID, Name, TerritoryId

추천서는 다음과 같습니다.

ID, LeadId, Name

영토는 다음과 같습니다.

ID and Name

리드는 항상 영토와 관련이 있으며 리드는 선택적으로 추천자와 관련 될 수 있습니다.

리드 및 참조 레코드는 정기적으로 삽입됩니다 (참조자가 덜 자주). 그리드 뷰에서 보고서를 출력하고 싶습니다.

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

그러나 이제 나는 추천자에 의해 수를 분해하고 싶습니다.

나는 피벗으로 부분적으로 그렇게 할 수 있다는 것을 이해하지만, 나는 코드의 참조기를 명시 적으로 언급해야한다는 것을 이해합니다. 참조자의 행 수를 기반으로 추가 열을 추가하는 일종의 동적 피벗을 수행 할 수있는 방법이 있습니까?

SP 내부에서 동적 SQL을 사용해야합니까?

도움이 되었습니까?

해결책

이 같은:

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에서 Square Bracketed 목록을 생성해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top