此查询将在表格中插入销售日期和计数。
SELECT
replace(CONVERT(varchar(10), DueDate, 112),'-',''),
count( distinct sale)
FROM
sale s
JOIN
Organisation o ON s.Organisationid = o.OrganisationID
WHERE
CAST(duedate AS DATE) ='1 Jan 2015'
AND '01 Jan 2015' BETWEEN StartDateUTC AND EndDateUTC
GROUP BY
replace(CONVERT(varchar(10), DueDate, 112),'-','')
我希望我的查询在每月的每一天(2015年1月)运行,并在表格中插入每天的销售次数。
有没有像...的方式。
创建一个游标或一个LOOP,它继续运行一个参数,该参数的起始值为2015年1月1日和2015年1月31日的结束值,并且在第一次运行时它会使1月1日的计数保持不变,并且参数保持递增每一次运行的一天,最后在31日之后停止。
最终结果应该有一张表格,列出2015年1月每天的销售额。
例如:
1stJan- 10
2nd jan -20
3rd Jan - 15
依此类推,直到1月31日
我正在使用SQL Server 2012
答案 0 :(得分:-1)
您可以使用while循环执行此操作。使用FromDate
和ToDate
并增加FromDate
,直至到达EndDate
。将结果插入临时表,并在循环从临时表(@ResultTable
)结束后选择结果。
尝试这样的事情。
DECLARE @FromDate DATE = '01/01/2015',
@EndDate DATE = '01/31/2015'
DECLARE @ResultTable TABLE(DueDate VARCHAR(50), Sales INT)
WHILE (@FromDate <= @endDate)
BEGIN
INSERT INTO @ResultTable
SELECT
replace(CONVERT(varchar(10), DueDate, 112),'-',''),
count( distinct sale)
FROM
sale s
JOIN
Organisation o ON s.Organisationid = o.OrganisationID
WHERE
CAST(duedate AS DATE) ='1 Jan 2015'
AND '01 Jan 2015' BETWEEN StartDateUTC AND EndDateUTC
GROUP BY
replace(CONVERT(varchar(10), DueDate, 112),'-','')
--Incrementing to next date
SELECT @FromDate = DATEADD(DAY, 1, @FromDate)
END
SELECT * FROM @ResultTable