首页 > Linux操作系统 > Linux操作系统 > 用SQL寫,該怎么寫?
WITH A AS (SELECT 111 A1,50 A2,111 B1, 20 B2 FROM DUAL
UNION
SELECT 121 A1,60 A2,121 B1, 100 B2 FROM DUAL
UNION
SELECT 122 A1,40 A2,NULL B1, NULL B2 FROM DUAL
UNION
SELECT 135 A1,55 A2,NULL B1, NULL B2 FROM DUAL
UNION
SELECT 141 A1,15 A2,NULL B1, NULL B2 FROM DUAL
UNION
SELECT NULL A1,NULL A2, 101 B1,40 B2 FROM DUAL
UNION
SELECT NULL A1,NULL A2,151 B1, 21 B2 FROM DUAL
)
select NVL(A1,B1),CASE WHEN A1=B1 THEN ABS(A2-B2)
WHEN A1 IS NULL THEN ABS(NVL(A2,0)-NVL(B2,0))
WHEN B1 IS NULL THEN ABS(NVL(A2,0)-NVL(B2,0)) END C2
FROM A
其實仔細看了哈,沒想到還有更簡單
select nvl(A1,B1) C1,abs(NVL(A2,0)-NVL(B2,0)) C2 from A;
一定要加NVL
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10768286/viewspace-83462/,如需转载,请注明出处,否则将追究法律责任。