我正在寫一個查詢,以給我本週,本月和今年出售的產品數量(3個單獨的列)到目前爲止,一個月至一年的時間以及一年至今的縮放含義今天例如它會顯示從星期一開始銷售的產品,因爲從本月的第一天開始,從今年的第一天開始,隨着時間的推移這將繼續每一週,每月和每一年,還有其他三個專欄去年同樣的邏輯。我需要的是幫助,讓使用DATEADD DATEDIFF或(例如(DATEADD(分鐘,-15,日期查詢GETDATE()))。SQL獲得每月和每週數據
非常感謝你,也是我正在使用SQL Server 2008中
我正在寫一個查詢,以給我本週,本月和今年出售的產品數量(3個單獨的列)到目前爲止,一個月至一年的時間以及一年至今的縮放含義今天例如它會顯示從星期一開始銷售的產品,因爲從本月的第一天開始,從今年的第一天開始,隨着時間的推移這將繼續每一週,每月和每一年,還有其他三個專欄去年同樣的邏輯。我需要的是幫助,讓使用DATEADD DATEDIFF或(例如(DATEADD(分鐘,-15,日期查詢GETDATE()))。SQL獲得每月和每週數據
非常感謝你,也是我正在使用SQL Server 2008中
下面是一些未經測試的代碼,其很可能被優化,但是應該讓你朝着正確的方向前進。這使用PIVOT
操作將行轉換爲列。
SELECT WeekCount, MonthCount, YearCount
FROM
(
SELECT ProductId,
CASE
WHEN ProductSoldDate >= DATEADD(dd, 1 - DATEPART(dw, GETDATE()), GETDATE())
THEN 'WeekCount'
WHEN ProductSoldDate >= DATEADD(mm, DATEDIFF(mm,0,GETDATE()), 0)
THEN 'MonthCount'
WHEN ProductSoldDate >= DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)
THEN 'YearCount'
END as lbl
FROM Products
) ProductSales
PIVOT
(
COUNT(ProductId)
FOR lbl IN ([WeekCount], [MonthCount], [YearCount])
) t
這裏是SQL Fiddle。
祝你好運。
使用DATEADD函數
在某些情況下,你可能想的時間間隔添加到datetime或smalldatetime值或減去的時間間隔。例如,您可能需要添加或從中減去一個月您可以使用DATEADD函數來執行此計算,該函數採用以下語法:
DATEADD(日期/ time_part,數字,日期)
實施例:
SELECT OrderDate, DATEADD(mm, 3, OrderDate) AS NewDate
FROM Sales.Orders
WHERE OrderID = 1001
使用DATEDIFF函數
的DATEDIFF函數計算兩個日期之間的時間間隔返回一個表示間隔的整數。該函數的語法如下:
DATEDIFF(日期/ time_part,日期,結束日期)
實施例:
SELECT OrderDate, DelivDate,
DATEDIFF(hh, OrderDate, DelivDate) AS HoursDiff
FROM Sales.Orders
WHERE OrderID = 1002
嘗試此頁:http://sqlserverpedia.com/wiki/Built-in_Functions_-_Date_and_Time_Functions – PowerUser