SQL Server ISNULL 在多表选择中不起作用



我是SQL服务器的新手,我正在尝试根据表的更新获取项目的最高价格,如果为null以将空值替换为零。

这是我所做的:

DECLARE @itemid BIGINT
SELECT
(SELECT ISNULL(MAX(ITEM_SUPPLIER_PRICE.Price), 0.00)
FROM ITEM_SUPPLIER_PRICE 
WHERE (ITEM_SUPPLIER_PRICE.item_id = 7)) AS price,  
itemunits.unit_id,
itemunits.unit_name 
FROM 
ITEM_SUPPLIER_PRICE 
INNER JOIN 
Items ON ITEM_SUPPLIER_PRICE.item_id = Items.Item_id 
INNER JOIN 
itemunits ON Items.Item_unit_id = itemunits.unit_id 
WHERE 
(Items.Item_id = 7) 
GROUP BY
itemunits.unit_id, itemunits.unit_name,
ITEM_SUPPLIER_PRICE.update_date 
ORDER BY 
ITEM_SUPPLIER_PRICE.update_date DESC;

我认为您只是在寻找组中的最高价格。由于价格可能不会为负,下面的第二个选项应该是等效的,但我把它扔进去以防万一出现问题。

SELECT
COALESCE(MAX(isp.Price), 0.00) AS price1,
MAX(COALESCE(isp.Price, 0.00)) AS price2,
iu.unit_id,
iu.unit_name 
FROM ITEM_SUPPLIER_PRICE isp
INNER JOIN Items i ON i.item_id = isp.Item_id 
INNER JOIN itemunits iu ON iu.unit_id = i.Item_unit_id
WHERE i.Item_id = 7
GROUP BY
iu.unit_id, 
iu.unit_name,
isp.update_date 
ORDER BY isp.update_date desc;

最新更新