2016-08-11 4 views
-2
SELECT DISTINCT 
    [BILLDATE]as BILLDATE 
    ,PROPERTYCODE 
    ,[RESTUARANTNAME] as RESTUARANTNAME 
    ,rt.FOODREVENUE 
    ,rt.LIQUORREVENUE 
    ,rt.TOBACCOREVENUE 
    ,rt.SOFTDRINKSREVENUE 
    ,rt.OTHERREVENUE 
    ,rt.FOODCOVERS 
    ,rt.LIQUORCOVERS 
    ,rt.SOFTDRINKSCOVERS 
    ,rt.TOBACCOCOVERS 
    ,rt.OTHERCOVERS 
from CoversToday t 
cross apply  
    (select 
     SUM([FOODREVENUE])as FOODREVENUE 
     ,SUM([LIQUORREVENUE])as LIQUORREVENUE 
     ,SUM([SOFTDRINKSREVENUE])as SOFTDRINKSREVENUE 
     ,SUM([TOBACCOREVENUE])as TOBACCOREVENUE 
     ,SUM([OTHERREVENUE])as OTHERREVENUE 
     ,SUM([FOODCOVERS])as FOODCOVERS 
     ,SUM([LIQUORCOVERS])as LIQUORCOVERS 
     ,SUM([SOFTDRINKSCOVERS])as SOFTDRINKSCOVERS 
     ,SUM([TOBACCOCOVERS])as TOBACCOCOVERS 
     ,SUM([OTHERCOVERS])as OTHERCOVERS 
    from CoversToday 
    where 
    PROPERTYcode = t.PROPERTYcode and [RESTUARANTNAME]=t.[RESTUARANTNAME] and 
    [BILLDATE] BETWEEN dateadd(year, datediff(MONTH, 0,t.[BILLDATE]),0) -- start of month 
AND t.[BILLDATE] 
    ) as rt 
+0

を選択(
を適用します。しかし、私は出力を得ていません – Thiru

+1

詳細を追加するためにあなたの質問を編集してください - それはコメントに読めません。 – Filburt

+0

確かに..そのクエリで(すべてのSUM関数は正常に動作していますが)出力が得られません。 null値を示しています。 – Thiru

答えて

1

月のスタート年のdateadd(MONTH, datediff(MONTH, 0, t.[BILLDATE]), 0)ないdateadd(year,...

スタートはdateadd(YEAR, datediff(YEAR, 0, t.[BILLDATE]), 0)

あなたです
0
dateadd(year, datediff(MONTH, 0,t.[BILLDATE]),0) 

ですミスタク。間違い訂正

DateDiff

の更新を参照してください

DateAdd(MONTH, DateDiff(MONTH, 0, T.[BILLDATE]), 0) 

幸運を

0

宣言@fymonth int型= 4; - FYの最初の月。

、TODAY_FOODREVENUE AS rt.FOODREVENUE_MTOD 、rt.FOODREVENUE_YTOD をDISTINCT BILLDATE 、PROPERTYCODE 、FOODREVENUEを選択、LIQUORREVENUE TODAY_LIQUORREVENUE 、rt.LIQUORREVENUE_MTOD 、rt.LIQUORREVENUE_YTOD 、TODAY_TOBACCOREVENUE AS TOBACCOREVENUE、RT AS。 TOBACCOREVENUE_MTOD 、rt.TOBACCOREVENUE_YTOD 、TODAY_SOFTDRINKSREVENUE AS SOFTDRINKSREVENUE、rt.SOFTDRINKSREVENUE_MTOD 、rt.SOFTDRINKSREVENUE_YTOD 、OTHERREVENUE TODAY_OTHERREVENUE 、rt.OTHERREVENUE_MTOD 、rt.OTHERREVENUE_YTOD 、TODAY_FOODCOVERS AS FOODCOVERS、rt.FOODCOVERS_MTOD 、rt.FOODCOVERS_YTOD 、TODAY_LIQUORCOVERS AS LIQUORCOVERS、rt.LIQUORCOVERS_MTOD 、rt.LIQUORCOVERS_YTOD 、TODAY_SOFTDRINKSCOVERS AS SOFTDRINKSCOVERS AS 、rt.SOFTDRINKSCOVERS_MTOD 、rt.SOFTDRINKSCOVERS_YTOD 、TODAY_TOBACCOCOVERS 、rt.TOBACCOCOVERS_MTOD 、rt.TOBACCOCOVERS_YTOD 、TODAY_OTHERCOVERS AS OTHERCOVERS、rt.OTHERCOVERS_MTOD 0 AS TOBACCOCOVERS、CoversToday tの CROSS FROM rt.OTHERCOVERS_YTOD

は、この部分は正常に動作している

----FOODREVENUE 

    SUM(t2.Foodrevenue) AS FOODREVENUE_YTOD 

    ,SUM(CASE WHEN t2.BILLDATE BETWEEN 
      -- start of month for t.BILLDATE 
     dateadd(MONTH, datediff(MONTH, 0, t3.BILLDATE), 0) 
     AND t3.BILLDATE 
    THEN t2.Foodrevenue END) AS FOODREVENUE_MTOD 

----LIQUORREVENUE 

,SUM(t2.LIQUORREVENUE) AS LIQUORREVENUE_YTOD 

    ,SUM(CASE WHEN t2.BILLDATE BETWEEN 
      -- start of month for t.BILLDATE 
     dateadd(MONTH, datediff(MONTH, 0, t3.BILLDATE), 0) 
     AND t3.BILLDATE 
    THEN t2.LIQUORREVENUE END) AS LIQUORREVENUE_MTOD  

----TOBACCOREVENUE 

,SUM(t2.TOBACCOREVENUE) AS TOBACCOREVENUE_YTOD 

    ,SUM(CASE WHEN t2.BILLDATE BETWEEN 
      -- start of month for t.BILLDATE 
     dateadd(MONTH, datediff(MONTH, 0, t3.BILLDATE), 0) 
     AND t3.BILLDATE 
    THEN t2.TOBACCOREVENUE END) AS TOBACCOREVENUE_MTOD  

----SOFTDRINKSREVENUE  


,SUM(t2.SOFTDRINKSREVENUE) AS SOFTDRINKSREVENUE_YTOD 

    ,SUM(CASE WHEN t2.BILLDATE BETWEEN 
      -- start of month for t.BILLDATE 
     dateadd(MONTH, datediff(MONTH, 0, t3.BILLDATE), 0) 
     AND t3.BILLDATE 
    THEN t2.SOFTDRINKSREVENUE END) AS SOFTDRINKSREVENUE_MTOD  

----OTHERREVENUE 
    ,SUM(t2.OTHERREVENUE) AS OTHERREVENUE_YTOD 

    ,SUM(CASE WHEN t2.BILLDATE BETWEEN 
      -- start of month for t.BILLDATE 
     dateadd(MONTH, datediff(MONTH, 0, t3.BILLDATE), 0) 
     AND t3.BILLDATE 
    THEN t2.OTHERREVENUE END) AS OTHERREVENUE_MTOD  

----FOODCOVERS 

    ,SUM(t2.FOODCOVERS) AS FOODCOVERS_YTOD 

    ,SUM(CASE WHEN t2.BILLDATE BETWEEN 
      -- start of month for t.BILLDATE 
     dateadd(MONTH, datediff(MONTH, 0, t3.BILLDATE), 0) 
     AND t3.BILLDATE 
    THEN t2.FOODCOVERS END) AS FOODCOVERS_MTOD  

---- LIQUORCOVERS 

    ,SUM(t2.LIQUORCOVERS) AS LIQUORCOVERS_YTOD 

    ,SUM(CASE WHEN t2.BILLDATE BETWEEN 
      -- start of month for t.BILLDATE 
     dateadd(MONTH, datediff(MONTH, 0, t3.BILLDATE), 0) 
     AND t3.BILLDATE 
    THEN t2.LIQUORCOVERS END) AS LIQUORCOVERS_MTOD  

---- SOFTDRINKSCOVERS 

    ,SUM(t2.SOFTDRINKSCOVERS) AS SOFTDRINKSCOVERS_YTOD 

    ,SUM(CASE WHEN t2.BILLDATE BETWEEN 
      -- start of month for t.BILLDATE 
     dateadd(MONTH, datediff(MONTH, 0, t3.BILLDATE), 0) 
     AND t3.BILLDATE 
    THEN t2.SOFTDRINKSCOVERS END) AS SOFTDRINKSCOVERS_MTOD 


    ---- TOBACCOCOVERS 

    ,SUM(t2.TOBACCOCOVERS) AS TOBACCOCOVERS_YTOD 

    ,SUM(CASE WHEN t2.BILLDATE BETWEEN 
      -- start of month for t.BILLDATE 
     dateadd(MONTH, datediff(MONTH, 0, t3.BILLDATE), 0) 
     AND t3.BILLDATE 
    THEN t2.TOBACCOCOVERS END) AS TOBACCOCOVERS_MTOD  


     ---- OTHERCOVERS 

    ,SUM(t2.OTHERCOVERS) AS OTHERCOVERS_YTOD 

    ,SUM(CASE WHEN t2.BILLDATE BETWEEN 
      -- start of month for t.BILLDATE 
     dateadd(MONTH, datediff(MONTH, 0, t3.BILLDATE), 0) 
     AND t3.BILLDATE 
    THEN t2.OTHERCOVERS END) AS OTHERCOVERS_MTOD 

from CoversToday t2 
JOIN CoversToday t3 ON t3.CoversTodayid = t.CoversTodayid -- change as needed to get 1 to 1 JOIN 
where 
t2.PROPERTYCODE = t.PROPERTYCODE and 
t2.BILLDATE BETWEEN 
      -- FY start for t.BILLDATE 
      dateadd(MONTH, 
       @fymonth - CASE WHEN month(t.BILLDATE) >= @fymonth THEN 1 ELSE 13 END, 
       dateadd(YEAR, datediff(YEAR, 0, t.BILLDATE), 0)) 
      AND t.BILLDATE 
) as rt 

ORDER BY BILLDATE 
関連する問題