2016-07-26 4 views
0

私のクエリは12ヶ月間にデータを分割しますが、別のテーブルから来る列'Submitted - New Business'です。月に分解される可能性もありますか?月サブ選択ステートメントで中断する

SELECT  'Eldred, Rod' AS Underwriter,     
       SUM(CASE WHEN Underwriter = 'Eldred, Rod' THEN UWReportFee ELSE 0 END) as 'UW ReportFee', 
       (SUM(CASE WHEN Underwriter = 'Eldred, Rod' THEN Fees ELSE 0 END)) - SUM(CASE WHEN Underwriter = 'Eldred, Rod' THEN UWReportFee ELSE 0 END) as 'Taxes & Surcharges', 
       COUNT(CASE WHEN Underwriter = 'Eldred, Rod' AND PolicyType = 'New Business' THEN QuoteControlNum END) as  'Submitted - New Business', 
     /*SubQuery*/ 
       (
       SELECT COUNT(CASE WHEN Underwriter = 'Eldred, Rod' AND Type = 'New Business' THEN ControlNo END) 
       FROM  tblCalendar b 
       LEFT JOIN ClearanceReportMetrics a ON b.MonthNum=Month(a.EffectiveDate)  
       AND b.YearNum = YEAR(a.EffectiveDate) AND CompanyLine = 'Arch Insurance Company' AND YEAR(EffectiveDate)=2016 
       ) as 'Submitted - New Business' , 
     /* End of SubQuery*/ 

       b.MonthNum, 
       b.YearNum 
    FROM  tblCalendar b 
    LEFT JOIN ProductionReportMetrics a ON b.MonthNum=Month(a.EffectiveDate) 
       AND b.YearNum = YEAR(a.EffectiveDate) AND CompanyLine = 'Arch Insurance Company' AND YEAR(EffectiveDate)=2016 
       --AND a.Underwriter ='Eldred, Rod' 
    WHERE  b.YearNum = 2016 
    GROUP BY --a.Underwriter, 
       b.MonthName, 
       b.MonthNum, 
       b.YearNum  

enter image description here

あなたは、PICに見ることができるよう、毎月同じ値を持つ、JOINをusinせずに何とかそれを打破するためにあらゆるチャンスがありますか?

+0

を設定しますか?しかし、内部クエリBテーブルの別名を別名にする必要があります。 – xQbert

+0

ありがとうございます。しかし、あなたの心には良い例がありますか? – Oleg

+0

2つのgrpoupedクエリーを結合するか、グループ化した後にクロス適用する必要があります。参加の問題は何ですか? – Serg

答えて

1

は、グループ化されたデータに参加してみあなたの月(a.effectivedate)にあなたの外からb.monthに参加するために相関サブクエリを使用し

declare @uw varchar(50) ='Eldred, Rod'; 
    declare @year = 2016; 
    declare @cn varchar(50) ='Arch Insurance Company'; 

    SELECT  @uw,     
       t1.'UW ReportFee', 
       t1.'Taxes & Surcharges', 
       t1.'Submitted - New Business', 
       t2.cnt as 'Submitted - New Business count' , 
       b.MonthNum, 
       b.YearNum 
    FROM  tblCalendar b 
    LEFT JOIN ( 
       SELECT 
       Month(EffectiveDate) as Month, 
       SUM(UWReportFee) as 'UW ReportFee', 
       (SUM(Fees) - SUM(UWReportFee) as 'Taxes & Surcharges', 
       COUNT(CASE WHEN PolicyType = 'New Business' THEN QuoteControlNum END) as 'Submitted - New Business', 
       FROM ProductionReportMetrics 
       GROUP BY Month(EffectiveDate), 
       WHERE YEAR(a.EffectiveDate) = @year AND CompanyLine = @cn AND Underwriter = @uw 
       ) t1 ON t1.Month = b.MonthNum 
    LEFT JOIN ( 
       SELECT 
       Month(EffectiveDate) as Month, 
       COUNT(ControlNo) as cnt 
       FROM ClearanceReportMetrics 
       GROUP BY Month(EffectiveDate), 
       WHERE YEAR(a.EffectiveDate) = @year AND CompanyLine = @cn AND Underwriter = @uw AND Type = 'New Business' 
       ) t2 ON t2.Month = b.MonthNum 
    WHERE  b.YearNum = 2016 
+0

驚くほど!ありがとうSerg、それは素晴らしい作品! – Oleg