SELECT CREX.RECODE,
(CASE WHEN ARX.ARRATE <> 0 THEN
ARX.ARRATE
ELSE
(CASE WHEN SBX.SBCLBL-SBX.SBDRBL > ARX.ARAMT1 THEN
(CASE WHEN SBX.SBCLBL-SBX.SBDRBL > ARX.ARAMT2 THEN
(CASE WHEN SBX.SBCLBL-SBX.SBDRBL > ARX.ARAMT3 THEN
(CASE WHEN SBX.SBCLBL-SBX.SBDRBL > ARX.ARAMT4 THEN
(CASE WHEN SBX.SBCLBL-SBX.SBDRBL > ARX.ARAMT5 THEN
(CASE WHEN SBX.SBCLBL-SBX.SBDRBL > ARX.ARAMT6 THEN
ELSE ARX.ARRAT6 END)
ELSE ARX.ARRAT5 END)
ELSE ARX.ARRAT4 END)
ELSE ARX.ARRAT3 END)
ELSE ARX.ARRAT2 END)
ELSE ARX.ARRAT1 END)
END) AS BUNGA,
ROW_NUMBER() OVER(PARTITION BY CREX.RECODE ORDER BY ARX.ARDTVL DESC) AS RN
FROM CTE_M5RE CREX
LEFT JOIN CORE_BMI.M6SB SBX ON (CREX.RECODE = SBX.SBRECO)
LEFT JOIN CORE_BMI.H8AR ARX ON (CREX.RECODE = ARX.ARRECO)
I'm writing an MySQL Query, where a few of the columns returned need to be calculated depending on quite a lot of conditions.
Anyone know how to fix my code?
I do suspect that your nested expressions can be simplified to something like:
CASE
WHEN ARX.ARRATE <> 0 THEN ARX.ARRATE
WHEN SBX.SBCLBL - SBX.SBDRBL <= ARX.ARAMT1 THEN ARX.ARRAT1
WHEN SBX.SBCLBL - SBX.SBDRBL <= ARX.ARAMT2 THEN ARX.ARRAT2
WHEN SBX.SBCLBL - SBX.SBDRBL <= ARX.ARAMT3 THEN ARX.ARRAT3
WHEN SBX.SBCLBL - SBX.SBDRBL <= ARX.ARAMT4 THEN ARX.ARRAT4
WHEN SBX.SBCLBL - SBX.SBDRBL <= ARX.ARAMT5 THEN ARX.ARRAT5
WHEN SBX.SBCLBL - SBX.SBDRBL <= ARX.ARAMT6 THEN ARX.ARRAT6
END AS BUNGA
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.