Wie schwenken ich dynamisch
-
05-07-2019 - |
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?
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.