I am trying to run a sql select code as below. I am trying to fetch the trans_date
which will either be in asutrans
or asuhistr
. But the below code doesnt give me any value and nor does it fail.
Do you think we can use CASE statement like that?
x
SELECT
v.voucher_no,
CASE
WHEN t.voucher_no = v.voucher_no THEN t.trans_date
ELSE t1.trans_date
END AS valuedate
FROM
aipdethis v
JOIN asutrans t ON t.client = v.client and t.voucher_no = v.voucher_no
JOIN asuhistr t1 ON t1.client = v.client and t1.voucher_no = v.voucher_no
WHERE
v.voucher_no ='22094200'
If I run the codes separately, then it does give me the result from asihistr. As below-
SELECT
v.voucher_no, t1.trans_Date FROM aipdethis v
JOIN asuhistr t1 ON t1.client = v.client and t1.voucher_no = v.voucher_no
WHERE
v.voucher_no ='22094200'
Advertisement
Answer
You cannot have case statement which checks voucher_no because you are already joining in the join query. I think this is what you’re expecting:
select
v.voucher_no,
CASE
WHEN t.trans_date is null then t1.trans_date
ELSE t.trans_date
END AS valuedate
FROM aipdethis v
JOIN asutrans t ON t.client = v.client and t.voucher_no = v.voucher_no
JOIN asuhistr t1 ON t1.client = v.client and t1.voucher_no = v.voucher_no
where v.voucher_no ='22094200';