eingeführt wird. Ich verwende CTE, um mehrere Felder zu erstellen und dann Verhältnisse zwischen diesen Feldern zu berechnen. Ich benutze auch den linken Join-Tisch-Kalender, um alle Monate in meinen SSRS-Bericht zu bringen, obwohl es für die nächsten Monate keine Daten gibt. Mein Problem ist, dass die Felder "Binds NewBusiness", "Binds Renewal", "Binds Rewrite" von einem anderen Tisch stammen müssen und auch nach Monaten aufgeteilt werden müssen. Wie kann ich diese Felder mitbringen, damit ich sie in einer abschließenden Select-Anweisung meines CTE verwenden kann und sie auch um Monate zerlegen kann? Wie kann ich diese Abfrage umschreiben?Wie kann ich diese Abfrage umschreiben? In der Auswahlliste kann nur ein Ausdruck angegeben werden, wenn die Unterabfrage nicht mit EXISTS
;WITH cte_Debra
AS
(
SELECT underwriter,
--ControlNo,
(
SELECT
SUM(CASE WHEN PolicyType = 'New Business' THEN Premium ELSE 0 END) as 'Binds NewBusiness',
SUM(CASE WHEN PolicyType = 'Renewal' THEN Premium ELSE 0 END) as 'Binds Renewal',
SUM(CASE WHEN PolicyType = 'Rewrite' THEN Premium ELSE 0 END) as 'Binds Rewrite'
FROM ProductionReportMetrics
WHERE YEAR(EffectiveDate)= 2016 AND CompanyLine = 'Ironshore Insurance Company'
) as Binds,
COUNT(CASE WHEN Type = 'New Business' THEN ControlNo END) as 'Submitted - New Business',
COUNT(CASE WHEN Type = 'Renewal' THEN ControlNo END) as 'Submitted - Renewals',
COUNT(CASE WHEN Type = 'Rewrite' THEN ControlNo END) as 'Submitted - Rewrite',
COUNT(CASE WHEN Type = 'New Business' THEN ControlNo END)+COUNT(CASE WHEN Type = 'Renewal' THEN ControlNo END)+COUNT(CASE WHEN Type = 'Rewrite' THEN ControlNo END) as 'Submitted - ALL',
COUNT(CASE WHEN Type = 'New Business' AND QuotedPremium IS NOT NULL THEN ControlNo END) as 'Quoted - New Business',
COUNT(CASE WHEN Type = 'Renewal' AND QuotedPremium IS NOT NULL THEN ControlNo END) as 'Quoted - Renewals',
COUNT(CASE WHEN Type = 'Rewrite' AND QuotedPremium IS NOT NULL THEN ControlNo END) as 'Quoted - Rewrite',
COUNT(CASE WHEN Type = 'New Business' AND QuotedPremium IS NOT NULL THEN ControlNo END)+COUNT(CASE WHEN Type = 'Renewal' AND QuotedPremium IS NOT NULL THEN ControlNo END)+COUNT(CASE WHEN Type = 'Rewrite' AND QuotedPremium IS NOT NULL THEN ControlNo END) as 'Quoted - ALL',
b.MonthNum,
b.YearNum,
b.MonthName
FROM tblCalendar b
LEFT JOIN Test_Plaza_ClearanceReport a ON b.MonthNum=Month(a.EffectiveDate)
AND b.YearNum = YEAR(a.EffectiveDate)
AND a.Underwriter ='Brown, Debra'
WHERE b.YearNum = 2016
GROUP BY
b.MonthName,
b.MonthNum,
b.YearNum,
--ControlNo,
underwriter
)
select Underwriter,
MonthNum,
YearNum,
MonthName,
[Binds - NEW BUSINESS],[Binds - RENEWALS],[Binds - REWRITE], -- Binds without Total
[Submitted - New Business], [Submitted - Renewals], [Submitted - Rewrite], --submitted
[Submitted - ALL], -- submitted ALL
[Quoted - New Business], [Quoted - Renewals], [Quoted - Rewrite], -- Quoted
[Quoted - ALL], -- quoted ALL
[Bound - NewBusiness],[Bound - Renewals],[Bound - Rewrite], --Bound
[Bound - ALL], -- Bound ALL
[Declined - NewBusiness],[Declined - Renewal],[Declined - Rewrite], --Declined
[Declined - ALL], --Declined ALL
--and so on
FROM cte_Debra
Das gewünschte Ergebnis würde so aussehen:
und diese drei Felder in rot eingekreist haben aus einer anderen Tabelle kommen. Gemeinsame Spalten sind Kontrollnummer und PolicyNumber
Oleg Sie fragen, wie eine weitere Tabelle hinzufügen, dass wir keine Kenntnis haben von seiner Struktur/Felder etc. und das ist eine Menge zu durchschauen.Ich würde vorschlagen, beweisen, Schema-Beispieldaten und gewünschte Ergebnis sowie dumbing die Tsql einige, so dass Sie nur mit 1 Beispiel für jedes Ihrer Probleme beschäftigen (zB brauchst du nicht nur 10 errechnete Rationen zu zeigen 1) – Matt