일부 기준을 만족하는 "첫 번째"행에서 열 값을 추출하려고합니다. "첫 번째"는 하드 코드 된 목록으로 정의됩니다 열 값의 불행히도 저는 SQL 아마추어입니다. DB2를 사용하고 있습니다.하드 코딩 된 열 값 목록에서 첫 번째 행 찾기 (피벗 문제?)
나는이 같은 비효율적으로 그것을 할 수 있습니다 :
SELECT COALESCE(
(SELECT COL FROM SOMETABLE WHERE X = "txt1" AND Y = "txt2" AND COL = 'A'),
(SELECT COL FROM SOMETABLE WHERE X = "txt1" AND Y = "txt2" AND COL = 'B'),
(SELECT COL FROM SOMETABLE WHERE X = "txt1" AND Y = "txt2" AND COL = 'C'),
(SELECT COL FROM SOMETABLE WHERE X = "txt1" AND Y = "txt2" AND COL = 'D')
)
문제는 여기에 SOMETABLE가 매우 큰 것입니다. 그래서 대신 다음과 같이하고 싶습니다 :
SELECT COALESCE(
(SELECT COL FROM T WHERE COL = 'A'),
(SELECT COL FROM T WHERE COL = 'B'),
(SELECT COL FROM T WHERE COL = 'C'),
(SELECT COL FROM T WHERE COL = 'D')
)
FROM
(SELECT COL FROM SOMETABLE WHERE X = "txt1" AND Y = "txt2") AS T
T 테이블을 참조 할 수 없기 때문에 이것은 유효하지 않습니다.
는 T 위의 다음 행이 포함되어 있다고 가정 :'E'
'B'
'D'
는 COALESCE 문에 지정된 첫 번째 값이기 때문에 그 때 나는, 'B'를 선택하고 싶습니다.
이제- - - - - - - D - B - -
I 집계 또는이 점을 "결합"하고 싶은 :이 결과를 얻을 수
SELECT
(CASE COL WHEN 'A' THEN COL ELSE NULL END),
(CASE COL WHEN 'B' THEN COL ELSE NULL END),
(CASE COL WHEN 'C' THEN COL ELSE NULL END),
(CASE COL WHEN 'D' THEN COL ELSE NULL END)
FROM
(SELECT COL FROM SOMETABLE WHERE X = "txt1" AND Y = "txt2") AS T
:
나는 내가 좋아하는 일을함으로써 어느 정도 가까이 내가 원하는 것을 얻을 수 있습니다 실현 다음과 같은 단일 행 :
- B - D
그런 다음 간단히 열을 결합합니다.
의견을 보내 주시면 대단히 감사하겠습니다.
오른쪽. 불행히도 "with"문은 내가 조회하는 Db2/400 시스템에서 지원되지 않습니다. – Einar
죄송합니다 ... DB2v9.1에서 지원됩니다 ( 은 과거에 사용 했었습니다) –