【发布时间】:2015-12-30 07:48:00
【问题描述】:
以下是我的示例查询。当我运行查询时,即使日期范围内有数据,PreviousTotalQuantity 也会返回 null。
SELECT
p.ActualId,
p.Name,
p.QTYONHAND AS OnHand,
p.PRICE AS DistCost,
SUM(soi.Quantity) AS PresentTotal,
SUM(CASE
WHEN soi.MASSCHDSHIPDATE > '2014-3-1' AND
soi.MASSCHDSHIPDATE < '2014-6-1' THEN soi.Quantity
ELSE NULL
END) AS PreviousTotalQuantity
FROM
sysdba.PRODUCT p
LEFT OUTER JOIN sysdba.SALESORDERITEMS soi
ON p.PRODUCTID = soi.PRODUCTID
WHERE
soi.MASSCHDSHIPDATE > '2015-3-1' AND
soi.MASSCHDSHIPDATE < '2015-6-1'
GROUP BY p.PRODUCTID, p.ACTUALID, p.NAME, p.QTYONHAND, p.PRICE
我还需要从给定日期提取上一年的数据。
【问题讨论】:
-
您使用的日期格式可能会根据语言设置导致问题,您应该始终使用 YYYYMMDD。
-
您在外连接中有表 SALESORDERITEMS,但由于您在 where 子句中使用它,它不会被外连接。如果您需要外部联接,请将日期范围移到外部联接中,但如果您只获取 2015 年,则在这种情况下您不会得到 2014 年
标签: sql sql-server null case-when