[SQL] DB2에 회전식
SQLDB2에 회전식
나는 DB2 table.This 내 테이블이 어떻게 구성되어 있는지입니다에서 열로 내 행을 바꾸어해야 ..
ItemID Item Value
---------------------
1 Meeting Now
1 Advise Yes
1 NoAdvise No
2 Meeting Never
2 Advise No
2 NoAdvise Null
2 Combine Yes
나는 이것이 (내가 결합 트랜스 싶지 않아 주)로 전치 싶은
ItemID Meeting Advise NoAdvise
---------------------------------------
1 Now Yes No
2 Never No Null
비트 도움을 기쁘게 할 수 쿼리로 어려움을 겪고?
해결법
-
==============================
1.그것은 아주 예쁜 아니지만, 그것을 작동합니다. DB2는 SQL 서버와 같은 PIVOT 내장 기능을 가지고 있지 않습니다.
그것은 아주 예쁜 아니지만, 그것을 작동합니다. DB2는 SQL 서버와 같은 PIVOT 내장 기능을 가지고 있지 않습니다.
SELECT DISTINCT A.ItemID ,(SELECT value FROM table B WHERE B.ItemID = A.ItemID AND B.Item = 'Meeting' ) AS Meeting ,(SELECT value FROM table B WHERE B.ItemID = A.ItemID AND B.Item = 'Advise' ) AS Advise ,(SELECT value FROM table B WHERE B.ItemID = A.ItemID AND B.Item = 'NoAdvise' ) AS NoAdvise FROM table A
-
==============================
2.bhamby에 의해 현재 허용 대답은 확실히 정확하지만 여러 상관 하위 쿼리를 사용하여가 훨씬 느린 하나의 그룹보다 경우 그것은 가치가 검사입니다 (힌트 : 그것은 가능성이 높습니다)
bhamby에 의해 현재 허용 대답은 확실히 정확하지만 여러 상관 하위 쿼리를 사용하여가 훨씬 느린 하나의 그룹보다 경우 그것은 가치가 검사입니다 (힌트 : 그것은 가능성이 높습니다)
SELECT A.ItemID, MAX(CASE WHEN A.Item = 'Meeting' THEN Value END) AS Meeting, MAX(CASE WHEN A.Item = 'Advise' THEN Value END) AS Advise, MAX(CASE WHEN A.Item = 'NoAdvise' THEN Value END) AS NoAdvise FROM A GROUP BY A.ItemID
또한 제 생각에 조금 간단
(PostgreSQL을에, 그러나뿐만 아니라 DB2 LUW에 작품) SQLFiddle
-
==============================
3.@bhamby 말했듯이, DB2는 PIVOT 기능이 없습니다. 대부분, 내 쿼리가 얼마나 결과가 검색됩니다 다릅니다 - 당신은 확실하게 그들을 프로파일 / 최적화를 실행해야 할 것입니다,하지만 난 상관 하위 쿼리 당 행 (잠재적으로 덜 효율적) 실행될 수 있다고 생각, 오히려 세트로보다. 이 작은 데이터 셋 이상 문제가되지 않을 수 있습니다.
@bhamby 말했듯이, DB2는 PIVOT 기능이 없습니다. 대부분, 내 쿼리가 얼마나 결과가 검색됩니다 다릅니다 - 당신은 확실하게 그들을 프로파일 / 최적화를 실행해야 할 것입니다,하지만 난 상관 하위 쿼리 당 행 (잠재적으로 덜 효율적) 실행될 수 있다고 생각, 오히려 세트로보다. 이 작은 데이터 셋 이상 문제가되지 않을 수 있습니다.
WITH Item (id) as (SELECT DISTINCT itemId FROM YourTable), SELECT item.id, Meeting.meeting, Advise.advise, NoAdvise.noadvise FROM Item LEFT JOIN (SELECT itemId, value as meeting FROM YourTable WHERE item = 'Meeting') as Meeting ON Meeting.itemId = Item.id LEFT JOIN (SELECT itemId, value as advise FROM YourTable WHERE item = 'Advise') as Advise ON Advise.itemId = Item.id LEFT JOIN (SELECT itemId, value as noadvise FROM YourTable WHERE item = 'NoAdvise') as NoAdvise ON NoAdvise.itemId = Item.id
(... 사실, 난 조금 당신이 부울 조건의 일종으로 나타납니다 모두 '조언'과 '어떤 조언'에 대한 열이 우려 해요 - 즉, 당신은 하나를 가지고 있지만, 다른 안) .
from https://stackoverflow.com/questions/15529107/pivoting-in-db2 by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 1 열은 쉼표 갖는 경우 조인 테이블 SQL (0) | 2020.05.06 |
---|---|
[SQL] pg_views 쿼리에서 불완전한 정보 [중복] (0) | 2020.05.06 |
[SQL] 나는 "존재하지 않는 관계 [TABLE]"오류가 계속 (0) | 2020.05.06 |
[SQL] PHP는 쇼핑 카트를 만드는 동안 오류 : "경고로 MYSQL_ASSOC ()는 자원, 부울 주어진 일 1 매개 변수를 기대한다"[중복] (0) | 2020.05.06 |
[SQL] 많은 열이 쿼리에서 하나의 열을 집계 (0) | 2020.05.06 |