sql - SqlServer - 如何显示每个月的数据,包括没有数据的月份
问题描述
你能在 Sql server 中帮助我吗,我有一张表格,我从中获取日期明智的数据。表结构。
Date Amount
-----------------
2019-05-04 16128.00
2019-05-06 527008.00
2019-05-07 407608.00
2019-05-10 407608.00
上面的查询我要补缺的日期,我的期望如下图
Date Amount
-----------------
2019-05-04 16128.00
2019-05-05 00
2019-05-06 527008.00
2019-05-07 407608.00
2019-05-08 0
2019-05-09 0
2019-05-10 407608.00
提前致谢
解决方案
您可以使用日历帮助表,否则像这样分配开始日期和开始日期,从日期DECLARE @fromdate DATE = '20190504', @todate DATE = '20190510'
和日期开始,您可以更改。
CREATE TABLE #amounttable
(
Dt DATE,
Amount BIGINT
);
INSERT into #amounttable(Dt, Amount) VALUES('2019-05-04',16128);
INSERT into #amounttable(Dt, Amount) VALUES('2019-05-06',527008);
INSERT into #amounttable(Dt, Amount) VALUES('2019-05-07',407608);
INSERT into #amounttable(Dt, Amount) VALUES('2019-05-10',407608);
DECLARE @fromdate DATE = '20190504', @todate DATE = '20190510';
SELECT c.d as Date, Amount = COALESCE(s.Amount,0)
FROM
(
SELECT TOP (DATEDIFF(DAY, @fromdate, @todate)+1)
DATEADD(DAY, ROW_NUMBER() OVER (ORDER BY number)-1, @fromdate)
FROM [master].dbo.spt_values
WHERE [type] = N'P' ORDER BY number
) AS c(d)
LEFT OUTER JOIN #amounttable AS s
ON c.d = s.Dt
WHERE c.d >= @fromdate
AND c.d < DATEADD(DAY, 1, @todate);
如需更多参考,请查看堆栈交换中的答案
推荐阅读
- postgresql - 如何在 gitlab-ci 上访问 postgres 容器的 postgres.conf?
- node.js - AppDynamics (Node.js/Express) 依赖项破坏了使用 Webpack 进行编译——任何人都可以确认吗?
- javascript - 如何在 Nest js 中迭代 @Query() 对象
- ruby-on-rails - rails 中计划的活动作业列表
- xml - 数组的自定义 XML Marshal,中间有字符串
- database - MongoDB 获取集合中的所有文档会使用 mgo 提供一个空的结构切片
- rappid - 如何使用 rappid 创建嵌套模板?
- flutter - 如何在行项目之间设置固定空间
- azure - 如何在 Azure Kubernetes 服务 (AKS) 中运行部署到 Virtual Kubelet 的 dockerized 'Hello World' Web 作业
- node.js - 不离开页面查询 ArangoDB