我有一個包含以下列(日期,商店,品牌,商品,價格)的表格(T1)。我每天都有數據。我需要創建一個新表格(T1_ByWeek),我想要保存每週數據。 T1_byWeek中的列應該是(WeekNr,Shop,Brand,Item,AvgPriceOfWeek)。從現有表格(T1)創建AGG表格(T1_ByWeek)
有人能給我提示如何爲T1_ByWeek編寫SQL嗎?
感謝
我有一個包含以下列(日期,商店,品牌,商品,價格)的表格(T1)。我每天都有數據。我需要創建一個新表格(T1_ByWeek),我想要保存每週數據。 T1_byWeek中的列應該是(WeekNr,Shop,Brand,Item,AvgPriceOfWeek)。從現有表格(T1)創建AGG表格(T1_ByWeek)
有人能給我提示如何爲T1_ByWeek編寫SQL嗎?
感謝
您可以使用DATEPART從日期中提取的週數。
我已更新您的SQL以包括在內。
例
Insert into [T1_ByWeek]
(
WeekNr,
Shop,
Brand,
Item,
Price
)
select
DATEPART(WEEK, Date),
Shop,
Brand,
Item,
Avg(Price)
From
T1
Where
Date BETWEEN '2016-02-22' and '2016-02-28'
Group by
DATEPART(WEEK, Date),
Shop,
Brand,
Item
;
我可以看到一個小問題,你的設計。每年都會有一週1,2,3等。在看你的桌子時,你無法分辨出2015年,2016年或者任何時候的第2周。有幾種方法可以解決這個問題。
方法一
添加一年列。 DATEPART(YEAR, [Date])
將提取年份。
方法二
與WeekCommencing更換WeekNr。這將是一個始終包含一週的第一天的日期列。您可以通過添加calendar table或通過查找MIN日期來計算(只有在您知道每週的每一天都會有銷售時,這才起作用)。
在這兩個我更喜歡第二種方法,雖然它有點難以建立。當然,你可以將兩者結合起來,並擁有三個領域。
謝謝,它運作良好。現在問題是,我想每個星期一運行這個專家。我應該如何寫在這個代碼的命令(哪裏日期之間........? – Ramaq
您可以使用[GETDATE](https://msdn.microsoft.com/zh-CN/library/ms188383.aspx)返回當前日期。 [DATEADD](https://msdn.microsoft.com/en-GB/library/ms186819.aspx)可用於計算開始日期。兩者都返回一個日期時間。要刪除時間部分,您可以[CAST](https://msdn.microsoft.com/zh-CN/library/ms187928.aspx)到日期。 SELECT CAST(GETDATE()AS DATE)As EndDate,CAST(DATEADD(DAY,-6,GETDATE())AS DATE)AS StartDate;'。最後你可以[接受這個答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work),如果它有幫助! ;) –
哦,我忘了;如果您運行除Express以外的任何版本,則可以使用[SQL Agent](https://msdn.microsoft.com/zh-cn/library/ms189237.aspx)安排您的查詢。 –
歡迎來到SO!我認爲你的問題已被低估,因爲這不是一個代碼編寫服務。不過,我們可以幫助您解決錯誤。有一個去,如果它不工作發佈你的代碼在這裏。請記住包含您收到的任何錯誤消息。您可能想要研究的一些主題包括:[GROUP BY](https://msdn.microsoft.com/en-us/library/ms177673.aspx),[聚合函數](https://msdn.microsoft.com/ en-GB/library/ms173454.aspx)和[Date Time Functions](https://msdn.microsoft.com/zh-CN/library/ms186724.aspx)。 –
我使用了以下SQL,但是我需要T1_ByWeek中的另一列作爲週數。任何幫助 插入[T1_ByWeek] \t店 \t,品牌 \t,項目 \t,價格 選擇 \t店 \t,品牌 \t,項目 \t,AVG(價格) \t從T1 Where Date BETWEEN'2016-02-22'and'2016-02-28' Group by Shop,Brand,Item – Ramaq
快速提示未來,提供更多信息時e提出原來的問題,而不是添加評論。人們更容易看到你想要的東西。 –