sql - 为日历的所有日期拉伸余额表
问题描述
我有一个库存余额表,截至更改 SQLFiddle的日期
我需要将这些遗骸延伸到缺失的日期,包括 0 个剩菜
我创建了一个日历
CREATE TABLE Calendar
("Date" DATE)
GO
DECLARE @start datetime
DECLARE @end datetime
SET @start = (SELECT MIN (a.Date) FROM Remains a)
SET @end = GETDATE();
WITH cte AS
(
SELECT @start "Date"
UNION all
SELECT "Date" + 1
FROM cte
WHERE "Date" < @end
)
INSERT INTO Calendar
SELECT cast("Date" AS date) AS "Date"
FROM cte
WHERE "Date" < GETDATE()
option(MAXRECURSION 0)
我从 Remains 表中获取最小日期并将其拖到今天 Calendar
接下来,我使用 OUTER APPLY 将日历加入到 Remains 表中,
SELECT
b.Date
,x.W_Code
,x.Prod_Code
,x.Quality
,x.Count
FROM Calendar b
OUTER APPLY (
SELECT
a.Date
,a.W_Code
,a.Prod_Code
,a.Quality
,a.Count
FROM Remains a
WHERE a.Date = b.Date AND a.Prod_Code = N'00005026957' AND a.W_Code = N'000000017' ) x
如果我的查询适用于 1 个特定的仓库、产品和质量,那么我会得到想要的结果
但是如果我删除仓库和产品的条件,则表格构建不正确
我需要每个组 W_Code、Prod_Code、Quality 都有日历中的每个日期
请帮我找到一种方法来实现这个也许我不需要日历我读过关于递归 CTE 但不明白如何应用它
我知道如何用值进一步填充表格,问题在于表格与日期的正确连接
谢谢
解决方案
推荐阅读
- python - 在 aws CDK 中找不到 select_subnets 函数
- python - 只允许某些 python 脚本允许导入和运行另一个脚本
- html - 获取所有行的数据并提取输入值,td.data() 属性的 tr.data()
- sql - 如何将变量从 PL/pgSQL 函数传递到查询选择语句?
- python - Python 多处理逐渐增加内存,直到它运行我们的
- google-analytics - Gtag.js 在 pagespeed 洞察力中增加 LCP
- apache-spark - 如何使用 spark-xml 包使用 XSD 解析 XML?
- datadog - Datadog 导出日志超过 5,000 条
- r - ggplot 用于线性对数回归模型?
- java - 当 Spring 的方法之一使用 @transactional 注释时,Spring 不会为 @service 注释类创建 bean