如果你知道每一個日期去至少有一個條目沿着以下幾行將起作用:
SELECT
Day = DATEPART(DAYOFWEEK,dateColumnName)
, Date = dateColumnName
, Sales = COUNT(*)
FROM
salesTable
GROUP BY
dateColumnName
如果它有可能有銷售額爲零的日期,那麼你應該考慮一個臨時表或添加一個日期表到你的數據庫並加入。
編輯:在this article很好地描述
SELECT
Day = DATENAME(DW,dateColumnName) -- Wrong function previously used this will get the name
, Date = CONVERT(VARCHAR, dateColumnName,103) -- this returns in format dd/mm/yyyy other codes are available
, Sales = COUNT(*)
FROM
salesTable
GROUP BY
DATENAME(DW,dateColumnName)
,CONVERT(VARCHAR, dateColumnName,103)
其它碼。
將以下代碼添加到具有所需參數(我稱它們爲startDate
和endDate
)的存儲過程意味着您可以每週通過執行提供參數的存儲過程來調用此代碼。 (Here's some Microsoft documentation on how procedures are used)
CREATE PROC procedureName (
@startDate DATETIME
,@endDate DATETIME
) AS
SELECT
Day = DATENAME(DW,dateColumnName) -- Wrong function previously used this will get the name
, Date = CONVERT(VARCHAR, dateColumnName,103) -- this returns in format dd/mm/yyyy other codes are available
, Sales = COUNT(*)
FROM
salesTable
WHERE
dateColumnName BETWEEN @startDate AND @endDate
GROUP BY
DATENAME(DW,dateColumnName)
,CONVERT(VARCHAR, dateColumnName,103)
存在具有2個參數的潛在缺點,你可以實際顯示超過1周。您可以使用單個參數創建它,並使用DATEADD
函數添加或刪除7天,以確定從提供的單個日期開始/結束日期。
我不確定我是否理解他的問題。但是如果你想計算每天的銷售額,你只需要按日期和計數(從表中選擇計數(銷售)到日期[不會工作,這只是爲了澄清我的意思]) –