bel*_*eed 1 sql-server join self-join outer-join sql-server-2008
我有以下查询,但没有给出预期的结果:
SELECT "invoice"."ITEMNO",
"invoice"."Outgoing",
"storeage"."incoming"
FROM "MVXJDTAP"."MVXJDTA"."invoice"
INNER JOIN "MVXJDTAP"."MVXJDTA"."storeage "
ON "invoice"."ITEMNO" = "storeage"."itemno"
ORDER BY"storeage"."itemno"
Tables:
invoice
itemno Outgoing
ZOMV3-94 4
ZOMV3-94 7
storeage
itemno incoming
ZOMV3-94 3
ZOMV3-94 1
ZOMV3-94 60
ZOMV3-94 5
Run Code Online (Sandbox Code Playgroud)
查询给出了结果:
itemno outgoing incoming
ZOMV3-94 4 3
ZOMV3-94 4 1
ZOMV3-94 4 60
ZOMV3-94 4 5
ZOMV3-94 7 3
ZOMV3-94 7 1
ZOMV3-94 7 60
ZOMV3-94 7 5
Run Code Online (Sandbox Code Playgroud)
但我希望得到以下真实结果:
ZOMV3-94 4 NULL OR 0
ZOMV3-94 7 NULL OR 0
ZOMV3-94 NULL OR 0 3
ZOMV3-94 NULL OR 0 1
ZOMV3-94 NULL OR 0 60
ZOMV3-94 NULL OR 0 5
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这个结果?
您可以使用a UNION ALL而不是a JOIN来获取结果:
select itemno,
outgoing,
null as incoming
from invoice
union all
select itemno,
null,
incoming
from storeage;
Run Code Online (Sandbox Code Playgroud)
请参阅SQL Fiddle with Demo.这给出了一个结果:
| ITEMNO | OUTGOING | INCOMING |
----------------------------------
| ZOMV3-94 | 4 | (null) |
| ZOMV3-94 | 7 | (null) |
| ZOMV3-94 | (null) | 3 |
| ZOMV3-94 | (null) | 1 |
| ZOMV3-94 | (null) | 60 |
| ZOMV3-94 | (null) | 5 |
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |