列出供应商,以及价格最低的产品SQL

时间:2014-12-02 23:42:09

标签: sql inner-join min

我正在尝试连接2个表并创建一个返回产品最低值的新字段。我尝试了很多变化,似乎无法让它发挥作用。

SELECT DISTINCT VENDOR.*, PRODUCT.P_PRICE, PRODUCT.LOWEST_PRICE AS MIN(PRODUCT.P_PRICE)
FROM PRODUCT
INNER JOIN VENDOR
ON VENDOR.V_CODE = PRODUCT.V_CODE
ORDER BY VENDOR.V_NAME

4 个答案:

答案 0 :(得分:1)

如果您要按供应商寻找最低价格,请使用group by和min:

SELECT  VENDOR.V_NAME,  MIN(PRODUCT.P_PRICE) AS LOWEST_PRICE 
FROM PRODUCT
INNER JOIN VENDOR
ON VENDOR.V_CODE = PRODUCT.V_CODE
GROUP BY VENDOR.V_NAME
ORDER BY VENDOR.V_NAME

答案 1 :(得分:1)

您可以使用此功能,这将从最低价格供应商产品订购

SELECT  VENDOR.V_NAME,  MIN(PRODUCT.P_PRICE) AS LOWEST_PRICE 
FROM VENDOR
INNER JOIN PRODUCT
ON VENDOR.V_CODE = PRODUCT.V_CODE
GROUP BY VENDOR.V_NAME
ORDER BY LOWEST_PRICE

SQL FIDDLE: - http://sqlfiddle.com/#!3/467c8/2

答案 2 :(得分:0)

不知道您的架构是如何定义的,请尝试:

SELECT 
    VENDOR.V_NAME, 
    PRODUCT.P_PRICE AS [VENDOR PRICE], 
    MIN(PRODUCT.P_PRICE) AS [LOWEST PRICE]
FROM 
    PRODUCT 
    INNER JOIN VENDOR ON VENDOR.V_CODE = PRODUCT.V_CODE 
GROUP BY
    VENDOR.V_NAME,PRODUCT.P_PRICE
ORDER BY 
    VENDOR.V_NAME

答案 3 :(得分:0)

如果您想要每个供应商的最低价格产品,我建议使用窗口功能:

select pv.*
from (select v.v_name, p.p_name, p.p_price
             row_number() over (partition by p.v_code order by p.p_price asc) as seqnum
      from vendor v join
           product p
           on v.v_code = p.v_code
     ) pv
where seqnum = 1