簡體   English   中英

T-SQL查詢以選擇最近3個月的數據,去年的月份,本月的平均值和所有月份的平均值

[英]T-SQL query to select last 3 months of data, last years month, averages of this month and average of all months

我有一個帶有列Category, Date, Monthly_Revenue

我需要一個查詢,該查詢將選擇Todays_MonthLast_Month ,2個月之前的Last_years_Month ,今天月份的平均值,所有月份的平均值。

該查詢需要按類別分組。

范例:

Category | Sept, 2012 | Aug, 2012| Jul, 2012 | Sept, 2011 | Average of Sept | Avg all Mo

作為SQL的新手,我還沒有。 我想知道是否有人可以對此進行破解。 謝謝。

樣本數據

'Burger'  '9/1/2012'   '500'
'Fries'  '10/1/2012    '300'
'Burger'  '6/1/2011'   '250'

您需要遵循這些原則。不是最佳解決方案,但會為您提供一個開始。這是一個靜態解決方案,但看起來您可能需要動態解決方案

*未測試

 SELECT 
 Category
,[Sep 2012]=SUM(CASE WHEN YEAR(TranDate)= YEAR(GETDATE()) AND MONTH(TranDate)= MONTH(GETDATE()) THEN Amount ELSE NULL END)
,[Aug 2012]=SUM(CASE WHEN  YEAR(TranDate)= YEAR(DATEADD(month,-1,GETDATE())) AND MONTH(TranDate)= MONTH(DATEADD(month,-1,GETDATE()))  THEN Amount ELSE NULL END)
,[Jul 2012]=SUM(CASE WHEN YEAR(TranDate)= YEAR(DATEADD(month,-2,GETDATE())) AND MONTH(TranDate)= MONTH(DATEADD(month,-2,GETDATE())) THEN Amount ELSE NULL END)
,[AVG Sep 2012]=AVG(CASE WHEN YEAR(TranDate)= YEAR(GETDATE()) AND MONTH(TranDate)= MONTH(GETDATE()) THEN Amount ELSE NULL END)
,[AVG 12 months]=AVG(CASE WHEN TranDatee > CAST(DATEADD(year,-1,GETDATE()) AS DATE) THEN Amount ELSE NULL END)/12
FROM Table1
GROUP BY Category,Amount

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM