Home » SQL & PL/SQL » SQL & PL/SQL » Rollup using with UNION
Rollup using with UNION [message #609189] Mon, 03 March 2014 09:33 Go to next message
zsiddiquis
Messages: 4
Registered: June 2006
Location: Mississauga Canada
Junior Member
Hi There,

Please see the below mentioned question.

1. I am using two queries with union/rollup
2. in both queries for instance one column Total employer Units
3. in one query total employer units value = 14 and second query total employer units value = 6
4. I like to show the grand total in Total employer units column for instance total employer units value = 20
5. Now Data showing total of query one 14 and total of query 2 6


I am going to copy and past my query as well, appreciate your hel in advance.

SELECT  TO_CHAR(trunc(cc.birthdate,'YEAR'),'DD-MON-YYYY') "# of Members by Year of Birth"
        ,count(m.contactid)
        ,'N/A' "Total Employer Units"
        ,'N/A' "Total Employer $ Volume"
        ,'N/A' "Total Employer $ Life Premiums"
        ,NVL(SUM(p.units),0)  "Total Employee Units"
        ,SUM(NVL((CASE WHEN  agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 50 AND 59 THEN agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE)  * p.units * 7000
               WHEN  agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 60 AND 64 THEN agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE)  * p.units * 6000
               WHEN  agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 65 AND 69 THEN agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE)  * p.units * 5000
               WHEN  agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 70 AND 74 THEN agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE)  * p.units * 4000
               WHEN  agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 75 AND 79 THEN agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE)  * p.units * 3000
               WHEN  agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 80 AND 84 THEN agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE)  * p.units * 2000
               WHEN  agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 85 AND 89 THEN agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE)  * p.units * 1000
               WHEN  agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE) > = 90 THEN agepkg_mis.ageyears(TRUNC(cc.birthdate,'YEAR'),SYSDATE)             * p.units * 0
          END),0)) "Total Employee $ Volume"
          
        ,NVL((SUM(p.units) * SUM(p.unit_cost)),0)  "Total Employee Life Premiums"
        ,'N/A' "Total Family(Dependant) units"
        ,'N/A' "Total Family(Dependant) volume"
        ,'N/A' "Tot Family(Dependant) premiums"
FROM    pri_mis p, member_mis m, contactv_con cc
WHERE   p.memberid=M.MEMBERID
AND     m.contactid=cc.contactid
AND     cc.deathdate is null
AND     nvl(p.state,'Accepted')='Accepted'
GROUP BY  ROLLUP(trunc(cc.birthdate,'YEAR'))
UNION 
SELECT   
        TO_CHAR(trunc(cc.birthdate,'YEAR'),'DD-MON-YYYY') "# of Members by Year of Birth" 
        ,count(cc.contactid)
        ,'N/A' "Total Employer Units"
        ,'N/A' "Total Employer $ Volume"
        ,'N/A' "Total Employer $ Life Premiums"
        ,NVl(SUM(pri.insuranceunits),0)  "Total Employee Units"
        ,SUM(NVL((CASE WHEN  agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 50 AND 59 THEN agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE)  * pri.insuranceunits * 7000
               WHEN  agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 60 AND 64 THEN agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE)  * pri.insuranceunits * 6000
               WHEN  agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 65 AND 69 THEN agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE)  * pri.insuranceunits * 5000
               WHEN  agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 70 AND 74 THEN agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE)  * pri.insuranceunits * 4000
               WHEN  agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 75 AND 79 THEN agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE)  * pri.insuranceunits * 3000
               WHEN  agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 80 AND 84 THEN agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE)  * pri.insuranceunits * 2000
               WHEN  agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE) BETWEEN 85 AND 89 THEN agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE)  * pri.insuranceunits * 1000
               WHEN  agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE) > = 90 THEN agepkg_mis.ageyears(trunc(cc.birthdate,'YEAR'),SYSDATE)             * pri.insuranceunits * 0
          END),0)) "Total Employee $ Volume" 
        ,NVL(SUM(pri.insuranceunits),0)*2 "Total Employee Life Premiums"
        ,'N/A' "Total Family(Dependant) units"
        ,'N/A' "Total Family(Dependant) volume"
        ,'N/A' "Tot Family(Dependant) premiums"
FROM    rmdeduction pri, rmperson rp, contactv_con cc, 
(SELECT personid, deathdate FROM rmpersonaldata) rpd
WHERE   deductioncode='PRI'
AND     pri.personid=rp.id
AND     pri.personid=rpd.personid(+)
AND     rpd.deathdate is null
AND     rp.contactid=cc.contactid
AND     cc.contactid IN (SELECT  m.contactid
                        FROM member_mis m, pri_mis p
                            WHERE   p.memberid = m.memberid
                                AND     NVL(p.state,'Accepted')  = 'Accepted'
                                AND     cc.deathdate IS NULL)
GROUP BY  ROLLUP(trunc(cc.birthdate,'YEAR'))                                
--Order By trunc(cc.birthdate,'YEAR')
;





Thanks,
Zeeshan

*BlackSwan added {code} tags. please do so yourself in the future.
see URL below for details
http://www.orafaq.com/forum/t/174502/

[Updated on: Mon, 03 March 2014 09:49] by Moderator

Report message to a moderator

Re: Rollup using with UNION [message #609190 is a reply to message #609189] Mon, 03 March 2014 09:53 Go to previous messageGo to next message
Michel Cadot
Messages: 68643
Registered: March 2007
Location: Nanterre, France, http://...
Senior Member
Account Moderator

Something like:
select *
from <your query>
group by rollup(...)
/
Re: Rollup using with UNION [message #609191 is a reply to message #609190] Mon, 03 March 2014 10:27 Go to previous messageGo to next message
zsiddiquis
Messages: 4
Registered: June 2006
Location: Mississauga Canada
Junior Member
Thanks for your reply, I already did that getting totals two totals with each union.


Thanks,
Zeeshan
Re: Rollup using with UNION [message #609192 is a reply to message #609191] Mon, 03 March 2014 11:12 Go to previous messageGo to next message
Michel Cadot
Messages: 68643
Registered: March 2007
Location: Nanterre, France, http://...
Senior Member
Account Moderator

I doubt you did that.
If you want more details, you have to post a test case representing your issue.

Re: Rollup using with UNION [message #609193 is a reply to message #609192] Mon, 03 March 2014 11:41 Go to previous messageGo to next message
zsiddiquis
Messages: 4
Registered: June 2006
Location: Mississauga Canada
Junior Member
Please look at my query. Please look at the below mentioned data you can see the results at the bottom of the file I want one Grand total instead of repeating two totals seperately.

Thanks for your follow up!


01-JAN-1920 1 N/A N/A N/A 1 0 2 N/A N/A N/A
01-JAN-1923 3 N/A N/A N/A 3 0 18 N/A N/A N/A
01-JAN-1925 1 N/A N/A N/A 2 178,000 4 N/A N/A N/A
01-JAN-1926 6 N/A N/A N/A 13 1,144,000 156 N/A N/A N/A
01-JAN-1927 1 N/A N/A N/A 1 87,000 2 N/A N/A N/A
01-JAN-1928 2 N/A N/A N/A 3 258,000 12 N/A N/A N/A
01-JAN-1929 3 N/A N/A N/A 6 510,000 36 N/A N/A N/A
01-JAN-1930 1 N/A N/A N/A 2 336,000 4 N/A N/A N/A
01-JAN-1931 1 N/A N/A N/A 3 498,000 6 N/A N/A N/A
01-JAN-1931 5 N/A N/A N/A 13 2,158,000 130 N/A N/A N/A
01-JAN-1932 1 N/A N/A N/A 1 164,000 2 N/A N/A N/A
01-JAN-1933 4 N/A N/A N/A 9 1,458,000 72 N/A N/A N/A
01-JAN-1934 1 N/A N/A N/A 1 160,000 2 N/A N/A N/A
01-JAN-1936 5 N/A N/A N/A 11 2,574,000 110 N/A N/A N/A
01-JAN-1937 1 N/A N/A N/A 1 231,000 2 N/A N/A N/A
01-JAN-1938 3 N/A N/A N/A 12 2,736,000 24 N/A N/A N/A
01-JAN-1938 10 N/A N/A N/A 23 5,244,000 414 N/A N/A N/A
01-JAN-1939 12 N/A N/A N/A 24 5,400,000 528 N/A N/A N/A
01-JAN-1940 2 N/A N/A N/A 4 1,184,000 8 N/A N/A N/A
01-JAN-1940 13 N/A N/A N/A 25 7,400,000 600 N/A N/A N/A
01-JAN-1941 6 N/A N/A N/A 21 6,132,000 42 N/A N/A N/A
01-JAN-1941 12 N/A N/A N/A 32 9,344,000 640 N/A N/A N/A
01-JAN-1942 6 N/A N/A N/A 15 4,320,000 30 N/A N/A N/A
01-JAN-1942 15 N/A N/A N/A 27 7,776,000 702 N/A N/A N/A
01-JAN-1943 4 N/A N/A N/A 14 3,976,000 28 N/A N/A N/A
01-JAN-1943 22 N/A N/A N/A 53 15,052,000 2,014 N/A N/A N/A
01-JAN-1944 11 N/A N/A N/A 28 7,840,000 56 N/A N/A N/A
01-JAN-1944 27 N/A N/A N/A 56 15,680,000 2,576 N/A N/A N/A
01-JAN-1945 14 N/A N/A N/A 39 13,455,000 78 N/A N/A N/A
01-JAN-1945 25 N/A N/A N/A 63 21,735,000 2,142 N/A N/A N/A
01-JAN-1946 44 N/A N/A N/A 122 41,480,000 244 N/A N/A N/A
01-JAN-1946 53 N/A N/A N/A 145 49,300,000 14,500 N/A N/A N/A
01-JAN-1947 109 N/A N/A N/A 293 98,155,000 586 N/A N/A N/A
01-JAN-1947 122 N/A N/A N/A 324 108,540,000 76,464 N/A N/A N/A
01-JAN-1948 122 N/A N/A N/A 322 106,260,000 644 N/A N/A N/A
01-JAN-1948 136 N/A N/A N/A 356 117,480,000 96,120 N/A N/A N/A
01-JAN-1949 59 N/A N/A N/A 167 54,275,000 334 N/A N/A N/A
01-JAN-1949 69 N/A N/A N/A 188 61,100,000 22,936 N/A N/A N/A
01-JAN-1950 72 N/A N/A N/A 191 73,344,000 382 N/A N/A N/A
01-JAN-1950 86 N/A N/A N/A 217 83,328,000 34,720 N/A N/A N/A
01-JAN-1951 83 N/A N/A N/A 214 80,892,000 428 N/A N/A N/A
01-JAN-1951 97 N/A N/A N/A 246 92,988,000 43,296 N/A N/A N/A
01-JAN-1952 90 N/A N/A N/A 228 84,816,000 456 N/A N/A N/A
01-JAN-1952 96 N/A N/A N/A 254 94,488,000 45,720 N/A N/A N/A
01-JAN-1953 101 N/A N/A N/A 254 92,964,000 508 N/A N/A N/A
01-JAN-1953 106 N/A N/A N/A 270 98,820,000 55,080 N/A N/A N/A
01-JAN-1954 63 N/A N/A N/A 146 52,560,000 292 N/A N/A N/A
01-JAN-1954 67 N/A N/A N/A 159 57,240,000 20,034 N/A N/A N/A
01-JAN-1955 66 N/A N/A N/A 180 74,340,000 360 N/A N/A N/A
01-JAN-1955 69 N/A N/A N/A 188 77,644,000 24,816 N/A N/A N/A
01-JAN-1956 66 N/A N/A N/A 173 70,238,000 346 N/A N/A N/A
01-JAN-1956 72 N/A N/A N/A 196 79,576,000 27,440 N/A N/A N/A
01-JAN-1957 85 N/A N/A N/A 225 89,775,000 450 N/A N/A N/A
01-JAN-1957 87 N/A N/A N/A 232 92,568,000 38,976 N/A N/A N/A
01-JAN-1958 54 N/A N/A N/A 174 68,208,000 348 N/A N/A N/A
01-JAN-1958 54 N/A N/A N/A 175 68,600,000 18,900 N/A N/A N/A
01-JAN-1959 26 N/A N/A N/A 73 28,105,000 146 N/A N/A N/A
01-JAN-1959 27 N/A N/A N/A 78 30,030,000 4,212 N/A N/A N/A
01-JAN-1960 29 N/A N/A N/A 87 32,886,000 174 N/A N/A N/A
01-JAN-1960 29 N/A N/A N/A 88 33,264,000 5,104 N/A N/A N/A
01-JAN-1961 21 N/A N/A N/A 60 22,260,000 120 N/A N/A N/A
01-JAN-1961 23 N/A N/A N/A 70 25,970,000 3,080 N/A N/A N/A
01-JAN-1962 16 N/A N/A N/A 30 10,920,000 60 N/A N/A N/A
01-JAN-1962 16 N/A N/A N/A 30 10,920,000 960 N/A N/A N/A
01-JAN-1963 7 N/A N/A N/A 20 7,140,000 40 N/A N/A N/A
01-JAN-1963 7 N/A N/A N/A 21 7,497,000 294 N/A N/A N/A
01-JAN-1964 5 N/A N/A N/A 21 7,350,000 42 N/A N/A N/A
01-JAN-1964 5 N/A N/A N/A 21 7,350,000 210 N/A N/A N/A
01-JAN-1965 1 N/A N/A N/A 2 0 4 N/A N/A N/A
01-JAN-1965 2 N/A N/A N/A 7 0 28 N/A N/A N/A
01-JAN-1982 1 N/A N/A N/A 0 0 0 N/A N/A N/A
1 N/A N/A N/A 3 0 6 N/A N/A N/A
1,166 N/A N/A N/A 3,118 1,136,109,000 6,236 N/A N/A N/A
1,396 N/A N/A N/A 3,638 1,293,592,000 9,597,044 N/A N/A N/A
Re: Rollup using with UNION [message #609194 is a reply to message #609193] Mon, 03 March 2014 11:44 Go to previous messageGo to next message
BlackSwan
Messages: 26766
Registered: January 2009
Location: SoCal
Senior Member
Since we don't have your tables or data, we can not compile, run or test posted code.
It would be helpful if you provided DDL (CREATE TABLE ...) for tables involved.
It would be helpful if you provided DML (INSERT INTO ...) for test data.
It would be helpful if you followed Posting Guidelines - http://www.orafaq.com/forum/t/88153/0/311
It would be helpful if you provided expected/desired results & a detailed explanation how & why the test data gets transformed or organized.
Re: Rollup using with UNION [message #609195 is a reply to message #609193] Mon, 03 March 2014 12:01 Go to previous message
Michel Cadot
Messages: 68643
Registered: March 2007
Location: Nanterre, France, http://...
Senior Member
Account Moderator

And what about mine?
Post what you have been requested.

Previous Topic: Index on column name "number"!!!
Next Topic: dbms_output.put_line
Goto Forum:
  


Current Time: Tue Apr 23 02:10:20 CDT 2024