如果你知道每一个日期去至少有一个条目沿着以下几行将起作用:
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天,以确定从提供的单个日期开始/结束日期。
我不确定我是否理解他的问题。但是如果你想计算每天的销售额,你只需要按日期和计数(从表中选择计数(销售)到日期[不会工作,这只是为了澄清我的意思]) –