【发布时间】:2012-04-06 18:26:05
【问题描述】:
我有一个订单文件,其中包含订单 ID 和发货日期。订单只能在周一至周五发货。这意味着没有选择周六和周日的记录。
我使用同一个订单文件来获取所有订单日期,日期格式相同 (yyyymmdd)。
我想根据订单日期从订单文件中选择所有记录的计数......和(我相信)完全外部连接(或者可能是正确连接?)日期文件......因为我想见
20120330 293
20120331 0
20120401 0
20120402 920
20120403 430
20120404 827
等等……
但是,我的 sql 语句仍然没有返回第 31 和第 1 的零记录。
with DatesTable as (
select ohordt "Date" from kivalib.orhdrpf
where ohordt between 20120315 and 20120406
group by ohordt order by ohordt
)
SELECT ohscdt, count(OHTXN#) "Count"
FROM KIVALIB.ORHDRPF full outer join DatesTable dts on dts."Date" = ohordt
--/*order status = filled & order type = 1 & date between (some fill date range)*/
WHERE OHSTAT = 'F' AND OHTYP = 1 and ohscdt between 20120401 and 20120406
GROUP BY ohscdt ORDER BY ohscdt
任何想法我做错了什么?
谢谢!
【问题讨论】:
-
我建议不要即时构建
DatesTable,而是构建一个日历文件,其中包含每个日期(在某个范围内)。另外,最好使用内置的日期/时间/时间戳数据类型,而不是一些格式化的数字/字符串