我有一个使用TOTAL()
聚合函数的 SQL 查询:
SELECT
c.Id,
c.Name,
...
b.BatchNumber,
TOTAL(d.OrderedAmount) as TotalOrderedAmount
FROM OrderProducts a
LEFT JOIN WarehouseProducts b ON a.WarehouseProductId = b.Id
...
WHERE a.OrderId = @OrderId
AND (e.Status = @OrderedStatus OR e.Status IS NULL)
(为了清楚起见,删除了无关的行)
即使没有找到结果,此查询也至少返回一行,导致每一列都是 DBNull(我假设)。当我尝试将此查询的结果加载到 DataTable 中时,由于 null 值,我得到一个 ConstraintException。
如果我用 替换该TOTAL()
行0 as TotalOrderedAmount
,则返回的行数为 0,一切正常。
我尝试过使用WHERE a.Id IS NOT NULL
,但无论我尝试什么,似乎总是至少返回一行。
如何修改此查询,以便在未找到产品时返回的行数为 0,即使使用聚合函数?