Ниже приведен пример моего запроса. Когда я запускаю запрос, значение PreviousTotalQuantity возвращает null, даже если в диапазоне дат есть данные.SQL Server CASE возвращает 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
Мне также нужно вытащить данные за предыдущий год с указанной датой.
дата формат вы используете может вызвать проблемы, в зависимости языковые настройки, вы всегда должны использовать ГГГГММДД. –
У вас есть таблица SALESORDERITEMS во внешнем соединении, но поскольку вы используете ее в разделе where, она не будет соединена с внешним. Переместите диапазон дат во внешнее соединение, если вам нужно иметь внешнее соединение, но если вы используете только 2015, вы не получите 2014 в случае –