1

StackOverFlow: SQL Add Sum Row for Week と At the End Add the Grand Totalから毎週および毎月の合計を取得する同様の例に従おうとしています 。このレベルの SQL は私には無理なので、できるだけ明確にしてください。

ID、Store_ID、Sales_Date、Amount の 200K を超えるレコードを含むテーブルがあります。

ID  Store_ID    Amount  Sales_Date
1   215            7    1/29/2012
2   215            7    1/30/2012
3   215            7    1/31/2012
4   215            7    2/1/2012
5   215            7    2/2/2012
6   215            7    2/3/2012
7   215            7    2/4/2012
8   215            8    2/5/2012
9   215            8    2/6/2012
10  215            8    2/7/2012
    ***More and More Data***        
162 218            4    10/30/2011
163 218            4    10/31/2011
164 218            4    11/1/2011
165 218            4    11/2/2011
166 218            4    11/3/2011
167 218            4    11/4/2011
168 218            4    11/5/2011
169 218            8    11/6/2011
170 218            8    11/7/2011
171 218            8    11/8/2011
           ******LOTS MORE DATA*****

各 Store_ID の週ごとおよび月ごとの合計と、合計に関連付けられた日付を表示するビューを生成する必要があります。私が抱えている問題は、例が週の合計 (日付が関連付けられていない)、月の合計 (日付が関連付けられていない)、および 1 日の金額 (副次的な利点) を提供していることです。

週の終了日と月の終了日を表示する追加の列を結果に追加する方法を知る必要があります。

これは私がこれまでに持っているものです(例とほぼ同じです):

set datefirst 7

select top 100
    case
        when grouping(cast(datepart(week, [Sales_Date]) as varchar(255)))=1 then '<MonthEnd>'
        when grouping(cast([Sales_Date] as date))=1 then '<weektotal>'
        else cast(cast([Sales_Date] as date) as varchar(255))
    end as Period
    , WkSales = sum(Amount)
    , Store = Store_ID
From KF_Store_Sales_Daily

group by 
    grouping sets(  
    (cast(datepart(month, [Sales_Date]) as varchar(255)), cast(datepart(week, [Sales_Date]) as varchar(255)),cast([Sales_Date] as date)),
    (cast(datepart(month, [Sales_Date]) as varchar(255)), cast(datepart(week, [Sales_Date]) as varchar(255))),
    (cast(datepart(month, [Sales_Date]) as varchar(255)))
    )
    , Store_ID
ORDER BY Store_ID, Sales_Date    
4

1 に答える 1