求SQL:近10天销售额,有可能某天没有销售额,但是结果要求显示10条记录

0
数据库:SQLSERVER


有一个简单的需求,就是求近10天的销售额。
有可能某天没有销售额。
但是统计要求结果要有10条记录。如果没有销售额,则当天显示为0.
按如下查询脚本,结果某天没有销售额,就不会显示那一天。
查询结果如下:
2015-09-14        10.20
2015-09-15        10.30
2015-09-16        20.90
2015-09-17        10.50


期望如下:
2015-09-08        0
2015-09-09        0
2015-09-10        0
2015-09-11        0
2015-09-12        0
2015-09-13        0
2015-09-14        10.50
2015-09-15        10.30
2015-09-16        20.90
2015-09-17        10.50

不知道能不能用一个SQL写出来。请大家指教。谢谢。
--建表
CREATE TABLE [dbo].[test_order_info](
[paytime] [date] NULL,
[product] [varchar](50) NULL,
[realprice] [decimal](18, 2) NULL
) ON [PRIMARY]
GO

--初始化
INSERT INTO [test_order_info]
values('2015-09-14', '1', 10.2);
INSERT INTO [test_order_info]
values('2015-09-15', '1', 10.3);
INSERT INTO [test_order_info]
values('2015-09-16', '1', 10.4);
INSERT INTO [test_order_info]
values('2015-09-16', '2', 10.5);
INSERT INTO [test_order_info]
values('2015-09-17', '1', 10.5);

--查询
SELECT paytime, isNull(SUM([realprice]),0.0)
FROM dbo.[test_order_info]
WHERE paytime >= CONVERT(DATE, DATEADD(DAY, -10, GETDATE()))
GROUP BY paytime
ORDER BY paytime
已邀请:
4

- 取是能力,舍是境界 2015-09-24 回答

这种问题就是先构造一样全集,然后使用左连接的特性
 
with tmp as
(
select CONVERT(DATE, DATEADD(DAY, -1 * number, GETDATE())) t_date
from master..spt_values
where type = 'P' and number < 10
)
SELECT tmp.t_date, isNull(SUM([realprice]),0.0)
FROM tmp
left join test_order_info on paytime = tmp.t_date
GROUP BY tmp.t_date
ORDER BY tmp.t_date

要回复问题请先登录注册