SELECT CASE
WHEN(SELECT TO_CHAR(A.BILL_DT, 'MM') ) >= 4
THEN
CONCAT (SELECT TO_CHAR(A.BILL_DT, 'YYYY') ),(SELECT TO_CHAR(A.BILL_DT+1, 'YYYY') )
ELSE
CONCAT (SELECT TO_CHAR(A.BILL_DT, 'YYYY') ) - 1, (SELECT TO_CHAR(A.BILL_DT, 'YYYY') ))
END AS FY,
SUM (A.BILL_AMT)
FROM REVADMIN.REV_BILL_HEADER A
GROUP BY CASE
WHEN (SELECT TO_CHAR(A.BILL_DT, 'MM') ) >= 4
THEN
CONCAT(SELECT TO_CHAR(A.BILL_DT, 'YYYY')), (SELECT TO_CHAR(A.BILL_DT, 'YYYY')) + 1)
ELSE
CONCAT (SELECT TO_CHAR(A.BILL_DT, 'YYYY' )) - 1, (SELECT TO_CHAR(A.BILL_DT, 'YYYY' ))
END;
This supposed to be true but still getting error why am getting missing expression error
>Solution :
Remove SELECT from CASE expression; just use column from the table in FROM clause.
For simplicity, I also removed concat and used the double pipe || concatenation operator.
(Though, I’m not sure what is that piece of code supposed to return, doesn’t make much sense to me but I guess you know.)
SELECT CASE
WHEN TO_CHAR (A.BILL_DT, 'MM') >= 4
THEN
TO_CHAR (A.BILL_DT, 'YYYY') || TO_CHAR (A.BILL_DT + 1, 'YYYY')
ELSE
TO_CHAR (A.BILL_DT, 'YYYY') - 1 || TO_CHAR (A.BILL_DT, 'YYYY')
END AS FY,
SUM (A.BILL_AMT)
FROM REVADMIN.REV_BILL_HEADER A
GROUP BY CASE
WHEN TO_CHAR (A.BILL_DT, 'MM') >= 4
THEN
TO_CHAR (A.BILL_DT, 'YYYY') || TO_CHAR (A.BILL_DT + 1, 'YYYY')
ELSE
TO_CHAR (A.BILL_DT, 'YYYY') - 1 || TO_CHAR (A.BILL_DT, 'YYYY')
END