目的: SQL 語法 - CASE 的用法
處理說明: 1>SELECT
CASE compare_value
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
2>SUBSTR (str, pos, len) : pos 由 1 開始
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
2>SUBSTR (str, pos, len) : pos 由 1 開始
3>LENGTH(AUFNR) : 欄位值的長度
SQL:
1>CASE WHEN THEN ELSE END
SELECT AUFNR,MATNR,BUDAT
FROM SAPR3.AUFM@SAP
WHERE MANDT='999'
AND WERKS IN ('5100','7100')
AND AUFNR IN (SELECT CASE
WHEN (SUBSTR(SAPNO,1,1)='F') OR (SUBSTR(SAPNO,1,1)='V') THEN SAPNO
ELSE LPAD(SAPNO,12,'0')
END as SAPNO_
FROM AMM_SRO
WHERE SAPNO IN ('FA210121','V47246049','20006541')
)
ORDER BY AUFNR;
2> SUBSTR(str,pos,len) : pos 以 1 開始
SQL1 用法:
SELECT AUFNR,MATNR,BUDAT
FROM SAPR3.AUFM@SAP
WHERE MANDT='999'
AND WERKS IN ('5100','7100')
AND AUFNR IN (SELECT CASE SUBSTR(SAPNO,1,1)
WHEN 'F' THEN SAPNO
ELSE LPAD(SAPNO,12,'0')
END as SAPNO_
FROM AMM_SRO
WHERE SAPNO IN ('FA210121','13194980','20006541')
)
ORDER BY AUFNR;
SQL2 用法:
SELECT AUFNR,MATNR,BUDAT
SELECT AUFNR,MATNR,BUDAT
FROM SAPR3.AUFM@SAP
WHERE MANDT='999'
AND WERKS IN ('5100','7100')
AND AUFNR IN (SELECT CASE
WHEN (SUBSTR(SAPNO,1,1)='F') OR (SUBSTR(SAPNO,1,1)='V') THEN SAPNO
ELSE LPAD(SAPNO,12,'0')
END as SAPNO_
FROM AMM_SRO
WHERE SAPNO IN ('FA210121','V47246049','20006541')
)
ORDER BY AUFNR;
沒有留言:
張貼留言