I tried this:
CREATE OR REPLACE VIEW PERC_AREA ( LS_ID,
AREA_T0, AREA_FI, AREA_EM, AREA_TI,
AREA_TOT, PERC_T0, PERC_FI, PERC_TI,
PERC_EM ) AS
SELECT A.LS_ID,
SUM(nvl(A.AREA,0)),
SUM(nvl(B.AREA,0)),
SUM(nvl(C.AREA,0)),
SUM(nvl(D.AREA,0)),
SUM(NVL(A.AREA,0)+NVL(B.AREA,0)+NVL(C.AREA,0)+NVL(D.AREA,0)),
SUM(A.AREA)/SUM(NVL(A.AREA,0)+NVL(B.AREA,0)+NVL(C.AREA,0)+NVL(D.AREA,0)),
SUM(B.AREA)/SUM(NVL(A.AREA,0)+NVL(B.AREA,0)+NVL(C.AREA,0)+NVL(D.AREA,0)),
SUM(C.AREA)/SUM(NVL(A.AREA,0)+NVL(B.AREA,0)+NVL(C.AREA,0)+NVL(D.AREA,0)),
SUM(D.AREA)/SUM(NVL(A.AREA,0)+NVL(B.AREA,0)+NVL(C.AREA,0)+NVL(D.AREA,0))
FROM AREA_T0 A, AREA_FI B,AREA_TI C, AREA_EM D
WHERE A.LS_ID=B.LS_ID(+)
AND a.LS_ID=C.LS_ID(+)
AND a.LS_ID=D.LS_ID(+)
GROUP BY A.LS_ID
How can I create a oracle view to get percentage of area FOR ALL LS_ID present in the 4 tables??
You need FULL OUTER JOIN for that. Check the 9i SQL manual for the syntax.
Or another option would be to union-all all four tables and then do your math from there. So the inline view you would use as a starting point would be something like:
select 'TI' AS tbl, LS_ID, SUM(AREA) AS area from area_ti
group by LS_ID
union all
select 'TO' AS tbl, LS_ID, SUM(AREA) AS area from area_to
group by LS_ID
union all
select 'FI' AS tbl, LS_ID, SUM(AREA) AS area from area_fi
group by LS_ID
union all
select 'EM' AS tbl, LS_ID, SUM(AREA) AS area from area_em
group by LS_ID
Last edited by jmodic; 09-27-2004 at 06:44 PM.
Jurij Modic ASCII a stupid question, get a stupid ANSI
24 hours in a day .... 24 beer in a case .... coincidence?
Bookmarks