Sql 列出供应商和价格最低的产品

Sql 列出供应商和价格最低的产品,sql,inner-join,min,Sql,Inner Join,Min,我正在尝试连接两个表,并创建一个新字段,返回产品的最低值。我尝试了许多变体,但似乎无法使其发挥作用 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 如果要按供应商查找最低价格,请使用group

我正在尝试连接两个表,并创建一个新字段,返回产品的最低值。我尝试了许多变体,但似乎无法使其发挥作用

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

如果要按供应商查找最低价格,请使用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

不知道架构是如何定义的,请尝试以下操作:

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

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

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:-

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

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

剪切一个原始代码的快速粘贴,修复了它,没有额外捕获它,您的括号假设为sql server,但它没有这样标记。我的法语很差,但我认为俗语是touch’。我自己的另一个假设。因为他都列出了,我想他可能想要一份所有供应商及其价格的清单,以及一份所有供应商提供的最低价格清单。如果只是谁的价格最低,那么这显然是一个没有价格比较的列表。PRODUCT.lowest_price AS MIN(PRODUCT.P_price)看起来是错误的。尝试最低价格(产品价格)