SQL Server ISNULL无法在多表选择中使用

时间:2018-06-10 19:29:10

标签: sql-server

我对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;

1 个答案:

答案 0 :(得分:0)

我认为你只是在寻找团队中的最高价格。由于价格可能不会是负数,下面的第二个选项应该是等价的,但我会把它扔进去以防万一。问题就在那里。

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;