Home » SQL & PL/SQL » SQL & PL/SQL » Rollup using with UNION
Rollup using with UNION [message #609189] |
Mon, 03 March 2014 09:33 |
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 #609193 is a reply to message #609192] |
Mon, 03 March 2014 11:41 |
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
|
|
|
|
|
Goto Forum:
Current Time: Tue Apr 23 02:10:20 CDT 2024
|