我想计算每日可用记录的数量,并每周合并报告。我写了下面的SQL,但它显示的数据超过一周。
select convert(varchar, CreatedDateTime, 101), COUNT(CreatedDateTime) as Count
from dbo.table
group by convert(varchar, CreatedDateTime, 101)
Union all
select 'Grand Total' CreatedDateTime,COUNT(CreatedDateTime)
from dbo.table
where CreatedDateTime >= DATEADD(WEEK,-1,getdate());
请建议。
答案 0 :(得分:1)
你错过了转换日期的地点,尝试:
select convert(varchar, CreatedDateTime, 101), COUNT(CreatedDateTime) as Count
FROM [Test_DB].[dbo].[table]
where convert(varchar, CreatedDateTime, 101) >= DATEADD(WEEK,-1,getdate())
group by convert(varchar, CreatedDateTime, 101)
Union all
select 'Grand Total' ,COUNT(CreatedDateTime)
FROM [Test_DB].[dbo].[table]
where CreatedDateTime >= DATEADD(WEEK,-1,getdate());
答案 1 :(得分:0)
我创建了一些要使用的样本数据
CREATE TABLE CreatedDateTime
(
CreatedDateTime DATETIME
)
将数据插入上表
INSERT INTO CreatedDateTime
VALUES
(GETDATE()-8),
(GETDATE()-8),
(GETDATE()-8),
(GETDATE()-8),
(GETDATE()-8),
(GETDATE()-8),
(GETDATE()-8),
(GETDATE()-6),
(GETDATE()-6),
(GETDATE()-1),
(GETDATE()-1),
(GETDATE()-1),
(GETDATE()-1),
(GETDATE()-1),
(GETDATE()-1),
(GETDATE()-2),
(GETDATE()-2),
(GETDATE()-2),
(GETDATE()-2),
(GETDATE()-2)
查询
select
convert(varchar, CreatedDateTime, 101) as Date,
COUNT(CreatedDateTime) as Total
from dbo.CreatedDateTime
where CreatedDateTime >= DATEADD(Week,-1,getdate())
GROUP BY ROLLUP(CreatedDateTime)