繁体   English   中英

SQL联接在哪里条件

[英]SQL Join on where condition

我如何加入这两个表

select m.caseno,
sum(m.BalanceAmount) GOVT from TABLE1 m
inner join TABLE2 g on m.Code = g.Code
where g.alpha in ('a','b','c') 
group by m.caseno

输出盒| GOVT

select m.caseno,
sum(m.BalanceAmount) MIF from TABLE1 m
inner join TABLE2 g on m.Code = g.Code
where g.alpha in ('d','e')
group by m.caseno

输出盒| MIF

我希望他们加入单个查询 GOVT | MIF

如果您不想触摸现有查询,则可以对它们进行FULL OUTER JOIN

select
  coalesce(a.caseno, b.caseno) as caseno,
  a.govt,
  b.mif
from ( -- first query
  select m.caseno,
  sum(m.BalanceAmount) GOVT from TABLE1 m
  inner join TABLE2 g on m.Code = g.Code
  where g.alpha in ('a','b','c') 
  group by m.caseno
) a
full outer join ( -- second query
  select m.caseno,
  sum(m.BalanceAmount) MIF from TABLE1 m
  inner join TABLE2 g on m.Code = g.Code
  where g.alpha in ('d','e')
  group by m.caseno
) b on a.caseno = b.caseno

必须使用FULL OUTER JOIN以及COALESCE()FULL OUTER JOIN可能在任一查询中显示的不匹配行。

用例何时显示为2列。

select m.caseno,
sum(case when g.alpha in ('d','e') then m.BalanceAmount else 0 end)  MIF ,
sum(case when g.alpha in ('a','b','c') then m.BalanceAmount else 0 end)  GOVT 
from TABLE1 m
inner join TABLE2 g on m.Code = g.Code
where g.alpha in ('a','b','c','d','e')
group by m.caseno

我认为您必须执行完全外部联接。 尝试这个。

SELECT *
FROM (
  select m.caseno,
    sum(m.BalanceAmount) GOVT from TABLE1 m
  inner join TABLE2 g on m.Code = g.Code
  where g.alpha in ('a','b','c') 
  group by m.caseno
) AS tab1
FULL OUTER JOIN (
  select m.caseno,
    sum(m.BalanceAmount) MIF from TABLE1 m
  inner join TABLE2 g on m.Code = g.Code
  where g.alpha in ('d','e')
  group by m.caseno
) AS tab2 
  ON tab2.caseno = tab1.caseno

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM