我正在做体重报告,并且遇到问题。我使用此查询来了解仓库中的重量输入情况,但是如果日期中没有交易,则此日期不会显示在结果中。SQL显示没有交易的日期,值= 0
SELECT erp.MKPF.BUDAT AS Data,
Sum(erp.MSEG.MENGE * erp.MARM.BRGEW) as pes
From erp.MKPF
INNER Join erp.MSEG on erp.MKPF.MANDT = erp.MSEG.MANDT and erp.MKPF.MBLNR = erp.MSEG.MBLNR
INNER Join erp.MARM on erp.MSEG.MANDT = erp.MARM.MANDT and erp.MSEG.MATNR = erp.MARM.MATNR And erp.MSEG.MEINS = erp.MARM.MEINH
INNER JOIN erp.MARA on erp.MSEG.MANDT = erp.MARA.MANDT and erp.MSEG.MATNR = erp.MARA.MATNR
WHERE erp.MKPF.MANDT = '100'
and erp.MKPF.BUDAT >= '20120720'
and erp.MKPF.BUDAT <= CONVERT(VARCHAR(8), GETDATE(), 112) -1
and erp.MSEG.LGORT in ('1001','1069')
and erp.MSEG.BWART In ('101','102','311','312')
and erp.MSEG.WERKS = '1001'
and erp.MARA.MTART in ('Z001','Z010','Z002','Z02E')
GROUP BY erp.MKPF.BUDAT*
现在的结果是这样的:
Data PES
20120720 9999999.9999
20120721 9999999.8888
20120723 9999999.7777
,我需要这个
Data PES
20120720 9999999.9999
20120721 9999999.8888
20120722 0
20120723 999999.7777
有人可以帮助我吗?
我所知,没有简单的方法来修改您的查询来获取你想要的数据集。数据如何最终呈现给用户?这可能是一个更好/更容易的地方来添加显示逻辑来填充0值的空日期。 – paul 2012-07-23 10:56:38
如果您构建辅助日期表并在budat上将其加入MKPF,您将获得缺少日期。过滤条件应应用于日期表。 – 2012-07-23 10:59:48
忽略我删除的答案 - 完全误读了问题。在这里同意尼古拉,虽然这应该给你一些想法。 http://weblogs.sqlteam.com/jeffs/archive/2007/09/10/group-by-month-sql.aspx – raven 2012-07-23 11:10:37