-DECODE関数は条件を加えてデータを違う値とかコラムに出力できる。
-DECODE(VALUE, IF1, THEN1, IF2, THEN2....)で使用
-VALUE値がIF1の場合、THEN1を返し、VALUE値がIF2の場合、THEN2値を返す。
-DECODE関数内にDECODE関数使用可能
--部署番号が10ならACCOUNTING、20ならRESEARCH、30ならSALES、その他はOPERATIONSを出力する SQL> SELECT deptno, DECODE(deptno, 10, 'ACCOUNTING' , 2 20, 'RESEARCH' , 3 30, 'SALES', 'OPERATIONS') name 4 FROM dept; DEPTNO NAME ---------- ---------- 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS --10部署は給与の合計を、20部署は最大値を、30部署は最小値を出力する SQL> SELECT deptno, DECODE(deptno, 10, SUM(sal), 2 20, MAX(sal), 3 30, MIN(sal)) sal 4 FROM emp 5 GROUP BY deptno; DEPTNO SAL ---------- ---------- 30 950 20 3000 10 8750 --部署別の給与合計を出力する SQL> SELECT deptno, NVL(SUM(DECODE(deptno, 10, sal)), 0) deptno10, 2 NVL(SUM(DECODE(deptno, 20, sal)), 0) deptno20, 3 NVL(SUM(DECODE(deptno, 30, sal)), 0) deptno30, 4 NVL(SUM(DECODE(deptno, 40, sal)), 0) deptno40 5 FROM emp 6 GROUP BY deptno; DEPTNO DEPTNO10 DEPTNO20 DEPTNO30 DEPTNO40 ---------- ---------- ---------- ---------- ---------- 30 0 0 8150 0 20 0 10875 0 0 10 8750 0 0 0
一般的に集計関数使用時は給与合計が行で検索されるが、
DECODEとMAX関数を使用すると列で値を表示できる
--部署別の給与合計を行で出力 SQL> SELECT d.deptno, NVL(SUM(e.sal), 0) sal 2 FROM emp e, dept d 3 WHERE e.deptno(+) = d.deptno 4 GROUP BY d.deptno 5 ORDER BY d.deptno; DEPTNO SAL ---------- ---------- 10 8750 20 10875 30 8150 40 0 --部署別の給与合計を列で出力 SQL> SELECT MAX(NVL(SUM(DECODE(deptno, 10, sal)), 0)) deptno10, 2 MAX(NVL(SUM(DECODE(deptno, 20, sal)), 0)) deptno20, 3 MAX(NVL(SUM(DECODE(deptno, 20, sal)), 0)) deptno30, 4 MAX(NVL(SUM(DECODE(deptno, 20, sal)), 0)) deptno40 5 FROM emp 6 GROUP BY deptno; DEPTNO10 DEPTNO20 DEPTNO30 DEPTNO40 ---------- ---------- ---------- ---------- 8750 10875 10875 10875
■CASE
-CASE関数はDECODE関数でカバー出来ない比較演算を解決できる関数
-DECODE関数での比較演算はGREATEST、LEAST等の関数を使用するが、
CASE関数では条件演算子をすべて使用できる。
-CASE関数はIF..THEN..ELSEと似ている。WHEN句の次に色んな条件を入れられる。
--上記DECEODE例をCASE関数で検索した例 SQL> SELECT deptno, 2 CASE deptno 3 WHEN 10 THEN 'ACCOUNTING' 4 WHEN 20 THEN 'RESEARCH' 5 WHEN 30 THEN 'SALES' 6 ELSE 'OPERATIONS' 7 END as "Dept Name" 8 FROM dept; DEPTNO Dept Name ---------- ---------- 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS
WHEN句の次に演算子が来る例
--給与別に違うUP率を適用 SQL> SELECT ename, 2 CASE 3 WHEN sal < 1000 THEN sal+(sal*0.8) 4 WHEN sal BETWEEN 1000 AND 2000 THEN sal+(sal*0.5) 5 WHEN sal BETWEEN 2001 AND 3000 THEN sal+(sal*0.3) 6 ELSE sal+(sal*0.1) 7 END sal 8 FROM emp; ENAME SAL ---------- ---------- SMITH 1440 ALLEN 2400 JONES 3867.5 MARTIN 1875 BLAKE 3705 CLARK 3185 SCOTT 3900 KING 5500 TURNER 2250 ADAMS 1650 JAMES 1710 ........
Aji & Habanero | TITanium-arts
返信削除Aji & Habanero titanium dioxide formula are a fine seasoning for Mexican cooking. While there are titanium bohr model few babyliss pro titanium flat iron other foods with a titanium nail similar flavour profile, the Mango Habanero is a nano titanium ionic straightening iron real