crosstab 쿼리를 짤려고하는데 해당 함수에 대한 이해도가 너무 작기도 하고 쿼리 경험도 많이 부족해서 도저히 안짜지네요 찾아봣는데 해당 상황과는 약간 다른 경우고요 dataset을 아래와 같이 바꾸고싶은데 잘안되네요...
도와주세요 ..ㅠ.ㅠ
이와 같은 데이타 set을
----before dataset ----
ord_item_no memo_text
76417 ㄷㄷㄷ
76417 ㄱㄱㄱ
76417 ㄴㄴㄴ
76417 ㄹㄹㄹ
이렇게 바꾸고 싶습니다
----after dataset ----
ord_item_no memo_text1 memo_text2 memo_text3 memo_text4 memo_text5 memo_text6 memo_text10
76417 ㄱㄱㄱ ㄴㄴㄴ ㄷㄷㄷ ㅅㅅㅅ ssss xxxx rrrr
// 그나마 엇비슷한 쿼리를 찾았는데 ... 저희쪽 데이타는 key 위치에 memotext인데 type형 고정 데이타가 아니라 메모 내용(즉 고정데이타가 아니라 가변적데이타)이여서 해당 쿼리에 해당은 안되는거 같더군요 ...
SELECT * FROM crosstab
( 'SELECT rowid, key, value FROM test WHERE key= ''key1'' OR key = ''key2'' OR key = ''key3'' OR key = ''key4'' ORDER BY 1,2') AS ct(rowid text, key1 text, key2 text, key3 text, key4 text);
SELECT ord_item_no , MIN(CASE rn WHEN 1 THEN memo_text END) memo_text_1 , MIN(CASE rn WHEN 2 THEN memo_text END) memo_text_2 , MIN(CASE rn WHEN 3 THEN memo_text END) memo_text_3 , MIN(CASE rn WHEN 4 THEN memo_text END) memo_text_4 , MIN(CASE rn WHEN 5 THEN memo_text END) memo_text_5 , MIN(CASE rn WHEN 6 THEN memo_text END) memo_text_6 , MIN(CASE rn WHEN 7 THEN memo_text END) memo_text_7 , MIN(CASE rn WHEN 8 THEN memo_text END) memo_text_8 , MIN(CASE rn WHEN 9 THEN memo_text END) memo_text_9 FROM (SELECT ord_item_no, memo_text , ROW_NUMBER() OVER(PARTITION BY ord_item_no ORDER BY 정렬기준) rn FROM test -- WHERE ord_item_no = 76417 ) a GROUP BY ord_item_no ;