I have the below query :
SELECT COUNT(CASE WHEN T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) TotalCount,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'APARTMENT' THEN 1 END) ApartmentCountTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'VILLA' THEN 1 END) VillaCountTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'STUDIO' THEN 1 END) StudioCountTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'DUPLEX' THEN 1 END) DuplexCountTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'APARTMENT' AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) ApartmentCountActiveTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'VILLA' AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) VillaCountActiveTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'STUDIO' AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) StudioCountActiveTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'DUPLEX' AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) DuplexCountActiveTotal
FROM CMT WHERE COND1 = COND1 AND COND2=COND2
Now , along with the above select values in the query I wanted the below results to also come
(SELECT ROUND (SUM(RENTAL_VALUE_PER_UNIT)*0.05) ApartmentMuncipalFee FROM CMT T WHERE COND1 = COND1
AND T.unit_usage_type_descr_e = 'RESIDENTIAL'
AND T.UNIT_TYPE_DESCR_E = 'APARTMENT'
GROUP BY T.UNIT_TYPE_DESCR_E)
(SELECT ROUND (SUM(RENTAL_VALUE_PER_UNIT)*0.05) VillaMuncipalFee FROM CMT T WHERE COND1 = COND1
AND T.unit_usage_type_descr_e = 'RESIDENTIAL'
AND T.UNIT_TYPE_DESCR_E = 'VILLA'
GROUP BY T.UNIT_TYPE_DESCR_E) VillaMuncipalFee
Kindly need help
Add them into SELECT
statement :
SELECT . . . ,
SUM(CASE WHEN T.unit_usage_type_descr_e = 'RESIDENTIAL' AND T.UNIT_TYPE_DESCR_E = 'APARTMENT' THEN RENTAL_VALUE_PER_UNIT * 0.05 ELSE 0 END) AS ApartmentMuncipalFee,
SUM(CASE WHEN T.unit_usage_type_descr_e = 'RESIDENTIAL' AND T.UNIT_TYPE_DESCR_E = 'VILLA' THEN RENTAL_VALUE_PER_UNIT * 0.05 ELSE 0 END) AS VillaMuncipalFee
FROM CMT
You can use the aggregate
function, add an extra condition in the count
and remove the condition from the WHERE
clause as follows:
SELECT
COUNT(CASE WHEN COND2 = COND2 AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) TotalCount,
COUNT(CASE WHEN COND2 = COND2 AND T.UNIT_TYPE_DESCR_E = 'APARTMENT' THEN 1 END) ApartmentCountTotal,
COUNT(CASE WHEN COND2 = COND2 AND T.UNIT_TYPE_DESCR_E = 'VILLA' THEN 1 END) VillaCountTotal,
COUNT(CASE WHEN COND2 = COND2 AND T.UNIT_TYPE_DESCR_E = 'STUDIO' THEN 1 END) StudioCountTotal,
COUNT(CASE WHEN COND2 = COND2 AND T.UNIT_TYPE_DESCR_E = 'DUPLEX' THEN 1 END) DuplexCountTotal,
COUNT(CASE WHEN COND2 = COND2 AND T.UNIT_TYPE_DESCR_E = 'APARTMENT' AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) ApartmentCountActiveTotal,
COUNT(CASE WHEN COND2 = COND2 AND T.UNIT_TYPE_DESCR_E = 'VILLA' AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) VillaCountActiveTotal,
COUNT(CASE WHEN COND2 = COND2 AND T.UNIT_TYPE_DESCR_E = 'STUDIO' AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) StudioCountActiveTotal,
COUNT(CASE WHEN COND2 = COND2 AND T.UNIT_TYPE_DESCR_E = 'DUPLEX' AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) DuplexCountActiveTotal,
ROUND(SUM(CASE WHEN UNIT_USAGE_TYPE_DESCR_E = 'RESIDENTIAL' AND UNIT_TYPE_DESCR_E = 'APARTMENT' THEN RENTAL_VALUE_PER_UNIT END) * 0.05) AS APARTMENTMUNCIPALFEE,
ROUND(SUM(CASE WHEN UNIT_USAGE_TYPE_DESCR_E = 'RESIDENTIAL' AND UNIT_TYPE_DESCR_E = 'VILLA' THEN RENTAL_VALUE_PER_UNIT END) * 0.05) AS VILLAMUNCIPALFEE
FROM CMT
WHERE COND1 = COND1; -- removed COND2 = COND2 and added in the all count
Cheers!!
You can use WITH
clause to create temp tables.
WITH TAB1 AS (
SELECT COUNT(CASE WHEN T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) TotalCount,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'APARTMENT' THEN 1 END) ApartmentCountTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'VILLA' THEN 1 END) VillaCountTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'STUDIO' THEN 1 END) StudioCountTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'DUPLEX' THEN 1 END) DuplexCountTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'APARTMENT' AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) ApartmentCountActiveTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'VILLA' AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) VillaCountActiveTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'STUDIO' AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) StudioCountActiveTotal,
COUNT(CASE WHEN T.UNIT_TYPE_DESCR_E = 'DUPLEX' AND T.TENANCY_STATUS = 'ACTIVE' THEN 1 END) DuplexCountActiveTotal
FROM CMT WHERE COND1 = COND1 AND COND2=COND2
) , TAB2 AS
(SELECT ROUND (SUM(RENTAL_VALUE_PER_UNIT)*0.05) ApartmentMuncipalFee FROM CMT T WHERE COND1 = COND1
AND T.unit_usage_type_descr_e = 'RESIDENTIAL'
AND T.UNIT_TYPE_DESCR_E = 'APARTMENT'
GROUP BY T.UNIT_TYPE_DESCR_E), TAB3 AS
(SELECT ROUND (SUM(RENTAL_VALUE_PER_UNIT)*0.05) VillaMuncipalFee FROM CMT T WHERE COND1 = COND1
AND T.unit_usage_type_descr_e = 'RESIDENTIAL'
AND T.UNIT_TYPE_DESCR_E = 'VILLA'
GROUP BY T.UNIT_TYPE_DESCR_E)
select * from TAB1, TAB2, TAB3
```
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.