过去两天我正在使用这两张表
parts_list表:
PART_ID VENDOR_ID LABEL
1 5 A
1 2 B
1 3 C
2 2 D
2 3 E
3 3 F
vendor_prsdnc表:
VENDOR_ID PRSCDNC
5 3
2 2
3 1
有人可以告诉我如何从优先级最高的供应商处检索每个零件的标签?例如,id为1的部分由3个供应商提供,但我们需要来自供应商的具有最高优先级的部分,即5.预期结果是:
PART_ID VENDOR_ID LABEL
1 5 A
2 2 D
3 3 F
[供应商ID与优先级不成比例]
我有这个查询
SELECT
SDS.PART_ID,
SDSIS.VENDOR_ID,
MAX(SDSIS.PRSCDNC)
FROM PARTS_LIST SDS,VENDOR_PRSDNC SDSIS
WHERE SDS.VENDOR_ID=SDSIS.VENDOR_ID
GROUP BY SDS.PART_ID,SDSIS.VENDOR_ID;
但它不会返回预期的结果。
答案 0 :(得分:1)
没有经过测试,但我认为它应该可行
select part_id,vendor_id,label
from
(
select pl.part_id
,pl.vendor_id
,pl.label
,vp.prscdnc
,max(vp.prscdnc) over (partition by pl.part_id) mx
from part_list pl,vendor_prsdnc vp
where pl.vendor_id=vp.vendor_id
)
where prscdnc =mx;