select ID, FY_WH, FY_CS, ( FY_WH+ FY_CS)
(select FY as FY_WH from TAB1 where LX='维护') a,
(select FY as FY_CS from TAB1 where LX='措施') b
where a.ID=b.ID
虽然我知道这里面其实就是个全连接问题,但是不知道为何,用一个表做全连接,总提示 ora00918错误,实在没法子,只得把全连接用 左、右来代替,这样居然没问题,只是语句看着相当笨拙了。
我现在用了个最笨的法子解决了问题:
select a ID, FY_WH, FY_CS, ( FY_WH+ FY_CS)
(select FY as FY_WH from TAB1 where LX='维护' group by ID) a,
(select FY as FY_CS from TAB1 where LX='措施' group by ID) b
where a.ID=b.ID(+)
union
select a ID, FY_WH, FY_CS, ( FY_WH+ FY_CS)
(select FY as FY_WH from TAB1 where LX='维护' group by ID) a,
(select FY as FY_CS from TAB1 where LX='措施' group by ID) b
where a.ID(+)=b.ID
select nvl(a.ID,b.ID), FY_WH, FY_CS, ( nvl(FY_WH,0)+ nvl(FY_CS,0)) FROM
(select ID ,FY as FY_WH from TAB1 where LX='维护') a
FULL OUTER JOIN
(select ID ,FY as FY_CS from TAB1 where LX='措施') b
ON a.id=b.id