可以说我有一张桌子
|vendor | price| productID|
|--------------------------------|
|abc | 6 | 0001 |
|1 | 7 | 0001 |
|def | 8 | 0001 |
|xyz | 30 | 0002 |
|zxy | 32 | 0002 |
现在我想获取具有
产品0001产品的min()价格的卖方,该产品将是产品0002的卖方abc
,而产品0002将是卖方xyz
但!如果有一个名为1的供应商,我想看到他的名字,而不是带有min()价格的实际供应商,如果没有某个产品的供应商名为1,我想查看带有min()价格的那个供应商再次
如果这对您有意义的话..它有点像if-else构造,但是我不知道如何在SQL中执行此操作
(对格式错误的表格表示抱歉,我只是没有以正确的方式将其格式化)
谢谢
这是一个优先级查询。一种方法是使用row_number()
优先级规则并将其放入order by
。结果查询:
select t.*
from (select t.*,
row_number() over (partition by productId
order by (case when vendorid = 1 then 1 else 2 end),
price asc
) as seqnum
from t
) t
where seqnum = 1;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句