我有以下查询:
ORD_CODE ORL_EVENT ACT_ACT
22057 144933 20
22145 144933 30
22146 144933 40
22147 144933 50
它显示正确的数据,但是ACT_ACT不显示某些值(如10),因为在这种情况下ORD_CODE为null。
这就是我得到的:
ORD_CODE ORL_EVENT ACT_ACT
NULL 144933 10
22057 144933 20
22145 144933 30
22146 144933 40
22147 144933 50
我尝试使用LEFT或RIGHT联接,但没有任何变化。我想要这个:
ORD_CODE
22057
22145
22146
22147
样本数据:
R5ORDERS表
ORL_ORDER ORL_EVENT ORL_PRICE ORL_ORDQTY
22057 10 1000 2
22145 10 50 10
22146 10 25 5
22147 10 20 1
R5ORDERLINES表
ACT_ORDER ACT_ACT
NULL 10
22057 20
22145 30
22146 40
22147 50
R5ACTIVITIES表
declare @Orders table
(
ORD_CODE int
)
insert @Orders values
(22057)
, (22145)
, (22146)
, (22147)
declare @OrderLine table
(
ORL_ORDER int
, ORL_EVENT int
, ORL_PRICE int
, ORL_ORDQTY int
)
insert @OrderLine values
(22057, 10, 1000, 2)
,(22145, 10, 50, 10)
,(22146, 10, 25, 5)
,(22147, 10, 20, 1)
declare @Activities table
(
ACT_ORDER int
, ACT_ACT int
)
insert @Activities values
(NULL , 10)
, (22057, 20)
, (22145, 30)
, (22146, 40)
, (22147, 50)
以下是可消耗格式的样本数据,以便其他人可以使用。
tar -xf openshift-origin-server-v3.10.0-rc.0-c20e215-linux-64bit.tar.gz -C /opt/redhat
答案 0 :(得分:0)
似乎您根本不需要left join
:
select r1.ACT_ORDER as ORD_CODE, r2.ORL_EVENT, r3.ACT_ACT
from R5ACTIVITIES r1 left join
R5ORDERLINES r2
on r2.ORL_ORDER = r1.ACT_ORDER left join
R5ORDERS r3
on r3.ORD_CODE = r2.ORL_ORDER;
答案 1 :(得分:0)
尝试一下:
FROM R5ACTIVITIES LEFT join R5ORDERLINES on ACT_ORDER = ORL_ORDER
RIGHT join R5ORDERS on ORD_CODE = ORL_ORDER
答案 2 :(得分:0)
您正在R5ORDERS和R5ORDERLINES上使用内部联接。空值将不会显示,因为根据定义,内部联接会选择两个表中具有匹配值的记录。要显示所有ACT_ACT值,请从R5ACTIVITIES中选择,然后使用左联接将其他表联接到该表。