I have 2 query that return different column output. Query 1 have Union while query 2 is a little bit simple. I try to use union but since the column output is different, It will become error. The full queries is as follows :
---------- QUERY 1
SELECT (
SELECT COUNT(*)
FROM (
SELECT DISTINCT el.REFERENCE
FROM T_LEJ el
WHERE el.REFERENCE <> 'NUM'
AND el.REFERENCE <> 'J'
AND el.REFERENCE <> 'DEBIT'
AND el.REFERENCE <> 'CREDIT'
AND el.REFERENCE <> 'COMPOUND'
AND el.REFERENCE <> 'TICKET'
AND el.REFERENCE <> 'P'
AND el.REFERENCE NOT LIKE 'BBK%'
)
) AS total,
CASE
WHEN c.DOC_TYPE = '1 RECEIPT' THEN 'RECEIPT'
ELSE c.DOC_TYPE
END AS DOC_TYPE,
c.ACC_NUM,
NVL(c.CKAI, 0) AS CKAI,
NVL(c.COMPOUND, 0) AS COMPOUND,
NVL(c.TICKET, 0) AS TICKET,
NVL(c.P, 0) AS P
FROM (
SELECT
*
FROM (
SELECT
'1 RECEIPT' AS DOC_TYPE,
COUNT(DISTINCT el.ACC_NUM) AS ACC_NUM,
SUM(CASE WHEN el.REF_CODE = '61101' THEN NVL(SUM(el.CREDIT - el.DEBIT), 0) END) AS CKAI,
SUM(CASE WHEN el.REF_CODE = '76101' THEN NVL(SUM(el.CREDIT - el.DEBIT), 0) END) AS COMPOUND,
SUM(CASE WHEN el.REF_CODE = '76102' THEN NVL(SUM(CREDIT - DEBIT), 0) END) AS TICKET,
SUM(CASE WHEN el.REF_CODE = '76103' THEN NVL(SUM(CREDIT - DEBIT), 0) END) AS P
FROM T_LEJ el
WHERE el.REFERENCE = 'RECEIPT'
AND el.TRK_TRANS BETWEEN TO_DATE('01/01/2024', 'DD/MM/YYYY') AND TO_DATE('31/01/2024', 'DD/MM/YYYY')
GROUP BY el.REF_CODE, el.CREDIT, el.DEBIT, el.ACC_NUM
) A
UNION
SELECT
*
FROM (
SELECT
SUBSTR(CONCAT(ra.SF, CONCAT(' | ', ra.DETAIL)), 0, 35) AS DOC_TYPE,
COUNT(DISTINCT lej.SELECT
DOC_TYPE,
SUM(e.BIL_KLMPK) AS total_bil_klmpk
FROM (
SELECT
DISTINCT e.NO_KELOMPOK,
SUBSTR(CONCAT(ra.SF, CONCAT(' | ', ra.KETERANGAN)), 0, 35) AS DOC_TYPE,
e.BIL_KLMPK
FROM
ETTRANS e
LEFT JOIN
ETTRANS_DET ed ON e.NO_KELOMPOK = ed.NO_KELOMPOK
LEFT JOIN
T_LEJ el ON ed.ACC_NUM = el.ACC_NUM
LEFT JOIN
REF_AGENCY ra ON el.REFERENCE = ra.SF
WHERE
e.COLL_CENTER = ra.SF
AND
e.TRK_KLMPK >= TO_DATE('2024-01-01', 'YYYY-MM-DD')
AND e.TRK_KLMPK <= TO_DATE('2024-01-31', 'YYYY-MM-DD')
) e
GROUP BY
DOC_TYPE
ORDER BY
DOC_TYPE;
) AS ACC_NUM,
NVL(SUM(lej.CKAI), 0) AS CKAI,
NVL(SUM(lej.COMPOUND), 0) AS COMPOUND,
NVL(SUM(lej.TICKET), 0) AS TICKET,
NVL(SUM(lej.P), 0) AS P
FROM (
SELECT DISTINCT el.REFERENCE
FROM T_LEJ el
WHERE el.REFERENCE <> 'NUM'
AND el.REFERENCE <> 'J'
AND el.REFERENCE <> 'DEBIT'
AND el.REFERENCE <> 'CREDIT'
AND el.REFERENCE <> 'COMPOUND'
AND el.REFERENCE <> 'TICKET'
AND el.REFERENCE <> 'P'
AND el.REFERENCE <> 'RECEIPT'
AND el.REFERENCE NOT LIKE 'BBK%'
) ruj
LEFT JOIN REF_AGENCY ra ON ruj.REFERENCE = ra.SF
LEFT JOIN (
SELECT
el.REFERENCE,
el.ACC_NUM,
CASE
WHEN el.REF_CODE = '61101' THEN NVL(SUM(CREDIT - DEBIT), 0)
END AS CKAI,
CASE
WHEN el.REF_CODE = '76101' THEN NVL(SUM(CREDIT - DEBIT), 0)
END AS COMPOUND,
CASE
WHEN el.REF_CODE = '76102' THEN NVL(SUM(CREDIT - DEBIT), 0)
END AS TICKET,
CASE
WHEN el.REF_CODE = '76103' THEN NVL(SUM(CREDIT - DEBIT), 0)
END AS P
FROM REF_AGENCY ra
LEFT JOIN T_LEJ el ON ra.SF = el.REFERENCE
WHERE el.TRK_TRANS BETWEEN TO_DATE('01/01/2024', 'DD/MM/YYYY') AND TO_DATE('31/01/2024', 'DD/MM/YYYY')
GROUP BY el.REFERENCE, el.CREDIT, el.DEBIT, el.REF_CODE, el.ACC_NUM
) lej ON ra.SF = lej.REFERENCE
GROUP BY ra.SF, ra.DETAIL
) B
) C
ORDER BY c.DOC_TYPE;
The output of Query 1:
—- QUERY 2
SELECT
DOC_TYPE,
SUM(e.NUM_GROUP) AS TOTAL_NUM_GROUP
FROM (
SELECT
DISTINCT e.GROUP_ID,
SUBSTR(CONCAT(ra.SF, CONCAT(' | ', ra.REFERENCE)), 0, 35) AS DOC_TYPE,
e.NUM_GROUP
FROM
T_TRANSACTION e
LEFT JOIN
T_TRANSACTION_DET ed ON e.GROUP_ID = ed.GROUP_ID
LEFT JOIN
T_LEJ el ON ed.ACC_NUM = el.ACC_NUM
LEFT JOIN
REF_AGENCY ra ON el.REFERENCE = ra.SF
WHERE
e.COLL_CENTER = ra.SF
AND
e.TRK_KLMPK >= TO_DATE('2024-01-01', 'YYYY-MM-DD')
AND e.TRK_KLMPK <= TO_DATE('2024-01-31', 'YYYY-MM-DD')
) e
GROUP BY
DOC_TYPE
ORDER BY
DOC_TYPE;
The output of Query 2:
I want to combine both query in one query (Query 2 to Query 1). The expected output should look like the following
Expected Output (The highlight supposedly from query 2 ):