我想為每個供應商對獲取不同的 Item_ID 串列,例如 (A,B), (A,C), (B,C) 我有一個這樣的表:
Item_ID | vendor
123 A
123 B
133 B
456 C
我想列出每對供應商之間所有不同的 Item_ID,如下所示。本質上,我想知道在一對供應商之間“覆寫”(或存在)的所有 Item_ID。
Vendor1 | Vendor 2 | Item_ID
A B 123
A B 133
A C 123
A C 456
B C 123
B C 133
B C 456
我曾嘗試使用自加入,讓 2 個供應商并排,但在如何列出每對的 Item_ID 上苦苦掙扎。這是我到目前為止所擁有的:
select
distinct a.vendor as vendor1, b.vendor as vendor2
from table a
join table b on a.vendor != b.vendor
and a.vendor >= b.vendor -- to remove duplicate combinations
uj5u.com熱心網友回復:
以下查詢在 SQL Server 2019 中有效,但我沒有機會在 Azure 中對其進行測驗。
你可以做:
with
v as (select distinct vendor as vendor from t)
select
a.vendor as vendor1,
b.vendor as vendor2,
x.item_id
from v a
join v b on b.vendor > a.vendor
cross apply (
select distinct item_id
from t
where t.vendor = a.vendor or t.vendor = b.vendor
) x
order by a.vendor, b.vendor
結果:
vendor1 vendor2 item_id
-------- -------- -------
A B 123
A B 133
A C 123
A C 456
B C 123
B C 133
B C 456
請參閱db<>fiddle的運行示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/428247.html
上一篇:SQL查詢以得出商品的平均銷售額
