![](/img/trans.png)
[英]How to display Items that equal a value in one column and are not null in another
[英]How to choose one column over another in a join if the column value is NULL?
我正在使用SQL Server和ANSI-89標准。
運輸類型是與運輸類型代碼上的運輸表的聯接。 訂單或訂單項與運輸代碼上的運輸表結合在一起。
我如何進行條件聯接,如果可以獲取每個訂單商品的運輸類型名稱,那么在這里可以使用什么正確的方法,以便我可以相應地選擇order或order_item上的transport_code並與運輸表聯接?
Order
-----
orderNo (PK)
country NOT NULL
transportCode NULL
OrderItems
----------
OrderNo (PK)
orderItemNo (PK)
transport_code NULL
Transport
---------
trasportcode (PK)
transportname NOT NULL
transporttypecode NOT NULL
transportType
-------------
transporttypecode (PK)
transporttypename NOT NULL
樣本數據
Order
OrderNo Country TransportCode
1 USA ST1
2 ENGLAND
Order Item
Order No orderItemNo itemname transportCode
1 1 cooker ST2
1 2 scissor
2 1 stapler
2 2 pencil ST3
2 3 bottle
Transport
transportcode name transporttypecode
ST1 INS BUTTERFLY W
ST2 LUFTHANSA A
ST3 TRANS SIBERIAN RAIL RL
TransportType
Transporttypecode name
W Water
A Air
RL Rail
產量
Order No orderItemNo itemname transportName transporttypeName
1 1 cooker LUFTHANSA Air
1 2 scissor INS BUTTERFLY Water
2 1 stapler
2 2 pencil TRANS SIBERIAN RAIL Rail
2 3 bottle
一種方法在on
子句中使用coalesce()
:
select oi.*, t.transportName, t.transporttypeName
from orderitems oi join
orders o
on oi.ordernum = o.ordernum left join
transport t
on t.transportcode = coalesce(oi.transportcode, o.transportcode) left join
TransportType tt
on tt.Transporttypecode = t.Transporttypecode;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.