Frage

Ich habe zwei Tabellen; Führt, Territorien und Referrer.

Blei hat Spalten:

ID, Name, TerritoryId

Referrer hat:

ID, LeadId, Name

Territorium hat:

ID and Name

Eine Leitung bezieht sich immer auf ein Gebiet und eine Leitung kann optional auf eine Referrer-beziehen.

Leads und Referrer-Datensätze werden regelmäßig eingesetzt (Referrer seltener). Ich möchte einen Bericht in einem Gridview Ausgabe, die wie folgt aussieht:

Territory | Lead Count | Ref1 Lead Count | Ref2 Lead Count | Ref3 Lead Count

Leeds       10            1                7                 2

Exeter     43             9                21                8

etc...

OK, so dass das Problem ist, dass ich von Territory gruppieren möchten und Zählen Sie die Leitungen pro Gebiet .... das ist in Ordnung: -

select t.Name, COUNT(1)
from Territory t inner join Lead l on l.TerritoryID = t.Id
group by t.Name

Aber jetzt will ich Zahl von Referrer brechen.

Ich verstehe, was ich tun kann, dass zum Teil mit PIVOT aber ich verstehe, dass ich explizit die Verweise in Code angeben. Gibt es eine Möglichkeit, eine Art von dynamischer Dreh auszuführen, die auf der Anzahl der Zeilen in Referrer-Basis zusätzliche Spalten anhängen?

Habe ich innerhalb eines SP dynamische SQL verwenden?

War es hilfreich?

Lösung

so etwas wie folgt aus:

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

Soweit ich die Referrer explizit werden müssen angegeben sehen würde, so würden Sie den Platz klammert Liste in einem sp erzeugen müssen, wenn man sie wollten dynamisch sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top