0

我有一个包含 2 列的 SQL 表,如下所示

第 1 列:生产日期 - 日期时间 - 非 NULL

第 2 列:数量 - 整数 - 非 NULL

现在表中有 2 条记录

1-1-2012, 5

1-3-2012, 7

如果我将日期范围 StartDate 指定为 1-1-2012 并将 EndDate 指定为 1-15-2012,则结果的输出应如下所示

2012 年 1 月 1 日 5

2012 年 1 月 2 日 0

2012 年 1 月 3 日 7

2012 年 1 月 4 日 0

2012 年 1 月 5 日 0

2012 年 1 月 6 日 0

.

.

.

2012 年 1 月 15 日 0

意味着查询应该返回给定范围内的所有日期,如果在表中没有条目,那么数量为 0。

怎么做?请通过查询提出建议

4

1 回答 1

0

这是一份关于你可以使用什么的非常乐观的草案(来源 -这里

declare @startDate datetime;
declare @endDate datetime;

set @startDate = '2012-02-09';
set @endDate = '2012-02-15';

WITH span AS (
  SELECT @startDate AS dt
  UNION ALL
  SELECT DATEADD(dd, 1, dt)
    FROM span s
   WHERE DATEADD(dd, 1, dt) <= @endDate)

select s.dt, t.Quantity from span s
join table t
on s.dt = t.ProductionDate 
于 2012-06-15T14:47:51.903 回答