ã¯ããã«
ãOracle 11g R1æ°æ©è½ã®Pivot
ã¨UnPivot
ã«ã¤ãã¦ãåºæ¬äºé
ãã使ç¨ä¾ã¾ã§ãSQLã®ã¤ã¡ã¼ã¸ã交ãã¦è§£èª¬ãã¾ãã
対象èªè
- Oracleã®
Pivot
ã¨UnPivot
ã使ãããæ¹ - Oracleã®SQLã®ç解ãæ·±ãããæ¹
å¿ è¦ãªç°å¢
ãæ¬ç¨¿ã§æ±ãSQLã¯ãOracle 11.1.0.6.0ã§åä½ç¢ºèªãã¾ãããSQL Server 2005以éã§ãå¿ç¨ãå¯è½ã§ãã
1. Pivotã¨UnPivotã¨ã¯
ãPivot
ã¨UnPivot
ã¯Oracle 11g R1ã®æ°æ©è½ã§ãselect
æã§ã®è¡åå¤æã容æã«è¡ããã¨ãã§ãã¾ããã¡ãªã¿ã«Pivot
ã¨UnPivot
ã¯ãSQL Server 2005以éã§ã使ç¨ã§ãã¾ããè±åè¾å
¸ã«ããã¨Pivot
ã®æå³ã¯ãåè©ã§ã¯ãæåããããåè©ã§ã¯ãä¸å¿,軸,æå軸,ããªããã§ãã
ãä¸è¨ã®Oracleã®select
æã®è©ä¾¡é åºã«ããã¦ãPivot
ã¨UnPivot
ã¯from
å¥ã®ä¸é¨ã¨ãã¦è©ä¾¡ãããããã§ãã
1. fromå¥ 2. whereå¥ (çµåæ¡ä»¶) 3. start withå¥ 4. connect byå¥ 5. whereå¥ (è¡ã®ãã£ã«ã¿æ¡ä»¶) 6. group byå¥ 7. havingå¥ 8. modelå¥ 9. selectå¥ 10. unionãminusãintersectãªã©ã®éåæ¼ç® 11. order byå¥
ãPivot
ã¨UnPivot
ã¯from
å¥ã®ä¸é¨ã¨ãã¦è©ä¾¡ãããã®ã§ä¸è¨ã®ãããªselect
æãå®è¡ã§ãã¾ããPivot
ãUnPivot
ããçµæã«è¡¨å¥åãä»ãããã¨ãã§ãã¾ãã
select * from dual unpivot(vals1 for key1 in(dummy,dummy,dummy,dummy,dummy)) unpivot(vals2 for key2 in(key1,key1)) pivot(max(key2) for vals2 in('DUMMY' as newDummy)) pivot(max(newDummy) for vals1 in('DUMMY' as newDummy2)) a Join dual b on a.newDummy2 is null;
newDummy2 | DUMMY |
X | null |
select * from (select RowNum as r1,RowNum as r2 from dict where RowNum <= 2) a Join dual b on 1=1 UnPivot(Val for Keys in(r1,r2));
DUMMY | Keys | Val |
X | R1 | 1 |
X | R2 | 1 |
X | R1 | 2 |
X | R2 | 2 |