I have requirement to count rows with different where clauses from the same table. The following is the required output from me
Bu #A #B #C #D #E #F #G #H #J #K #L #M #N
GB01 267 284 84 45 35 32 458 801 111 899 892 56 99
NL01 132 844 65 28 26 12 627 321 56 681 1062 127 128
Each column has its own criteria, so far I have the following SQL but it already looks ugly and doesn't exactly return what I need
SELECT * FROM (
SELECT
c_unit_code,
COUNT(*) AS ADVICE_EXPORT,
0 AS CONFIRMATION_EXPORT,
0 AS ISSUANCE_STANDBY
FROM EXIMTRX.EPLC_MASTER
WHERE (CLS_FLG NOT LIKE 'YES' OR CLS_FLG IS NULL) AND (
form_of_lc LIKE 'IRREVOCABLE' OR
form_of_lc LIKE 'REVOCABLE' OR
form_of_lc LIKE 'IRREVOCABLE TRANSFERABLE' OR
form_of_lc LIKE 'REVOCABLE TRANSFERABLE') AND our_eng LIKE 'ADVICE'
GROUP BY c_unit_code
UNION
SELECT
c_unit_code,
0 AS ADVICE_EXPORT,
COUNT(*) AS CONFIRMATION_EXPORT,
0 AS ISSUANCE_STANDBY
FROM EXIMTRX.EPLC_MASTER
WHERE (CLS_FLG NOT LIKE 'YES' OR CLS_FLG IS NULL) AND (
form_of_lc LIKE 'IRREVOCABLE' OR
form_of_lc LIKE 'REVOCABLE' OR
form_of_lc LIKE 'IRREVOCABLE TRANSFERABLE' OR
form_of_lc LIKE 'REVOCABLE TRANSFERABLE') AND our_eng LIKE 'CONFIRMATION'
GROUP BY c_unit_code
UNION
SELECT
c_unit_code,
0 AS ADVICE_EXPORT,
0 AS CONFIRMATION_EXPORT,
COUNT(*) AS ISSUANCE_STANDBY
FROM EXIMTRX.EPLC_MASTER
WHERE (CLS_FLG NOT LIKE 'YES' OR CLS_FLG IS NULL) AND (
form_of_lc LIKE 'IRREVOCABLE STANDBY' OR
form_of_lc LIKE 'REVOCABLE STANDBY' OR
form_of_lc LIKE 'IRREVOC TRANS STANDBY')
GROUP BY c_unit_code
);
and this is what it returns
GB01 0 0 17
GB01 0 39 0
GB01 80 0 0
NL01 0 0 32
NL01 0 159 0
NL01 341 0 0
Any ideas, how can I achieve what I need?
Oracle COUNT() function syntax. The Oracle COUNT() function is an aggregate function that returns the number of items in a group.
Firstly, the GROUP BY clause divides the rows in the contacts table into groups based on the values in the last_name column. Secondly, the COUNT () function returns the number of the same last names for each last name. Finally, the HAVING clause returns only groups that have more than one value of the last name.
1 COUNT (*) function returns the number of items in a group, including NULL and duplicate values. 2 COUNT (DISTINCT expression) function returns the number of unique and non-null items in a group. 3 COUNT (ALL expression) evaluates the expression and returns the number of non-null items in a group, including duplicate values.
If you omit the GROUP BY clause, then Oracle applies aggregate functions in the select list to all the rows in the queried table or view. You use aggregate functions in the HAVING clause to eliminate groups from the output based on the results of the aggregate functions, rather than on the values of the individual rows of the queried table or view.
SELECT
c_unit_code,
COUNT(case when YOUR_CONDITIONS_FOR_ADVICE_EXPORT then 1 end) AS ADVICE_EXPORT,
COUNT(case when YOUR_CONDITIONS_FOR_CONFIRMATION_EXPORT then 1 end) AS CONFIRMATION_EXPORT,
COUNT(case when YOUR_CONDITIONS_FOR_ISSUANCE_STANDBY then 1 end) AS ISSUANCE_STANDBY
FROM EXIMTRX.EPLC_MASTER
GROUP BY c_unit_code
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With