존재하지 않는 키워드가 있습니다. 조건이 b 인 경우 조건 a로 선택하는 SQL
ID LANGUAGE CAPTION
1 NL DUTCH CAPTION
1 F FRENCH CAPTION
2 NL DUTCH CAPTION
3 F FRENCH CAPTION
가 난 F 행 또는 NL 행이없는 경우에도 항상 ID 당 두 개의 행을 선택하는 선별이 필요합니다
나는 테이블이 (오라클 포탈 테이블), 요약, 다음과 같은 구조를 가지고 존재합니다. 그런 다음 행이 열 언어로 존재하지 않는 언어를 사용하지만 (언어 F 포함) 기존 행의 캡션
으로 선택해야합니다 그래서 쿼리의 출력은 다음과 같아야합니다
ID LANGUAGE CAPTION
1 NL DUTCH CAPTION
1 F FRENCH CAPTION
2 NL DUTCH CAPTION
2 F DUTCH CAPTION
3 F FRENCH CAPTION
3 NL FRENCH CAPTION
이인가 가능한?
매우 호기심이 많고 이며 이미 큰 감사를드립니다!
ps : 나는 이와 비슷한 것을 가지고 있지만 그것이 내가 원하는 것만은 아니다.
SELECT id, language, display_name
FROM portal.wwsbr_all_folders p
WHERE caid = 55
AND DISPLAY_IN_PARENT_FOLDER = 1
AND ((upper(language) = 'NL' AND not exists (SELECT * FROM portal.wwsbr_all_folders p2 WHERE p.id = p2.id and language IN ('F')))
OR
(upper(language) = 'F' AND not exists (SELECT * FROM portal.wwsbr_all_folders p2 WHERE p.id = p2.id and language IN ('NL')))
)
AND parent_id = 4030963
ORDER BY sub_folder_sequence
편집 : 나는 다음과 같은
(SELECT id, CASE language WHEN 'nl' THEN 'f' ELSE 'f' END lang, display_name
FROM portal.wwsbr_all_folders p
WHERE caid = 55
AND DISPLAY_IN_PARENT_FOLDER = 1
AND ((language = 'f' and exists(SELECT * FROM portal.wwsbr_all_folders p2 WHERE p2.id = p.id AND language = 'f'))
OR (language = 'nl' and not exists(SELECT * FROM portal.wwsbr_all_folders p2 WHERE p2.id = p.id AND language = 'f')))
AND parent_id = 4656102)
UNION ALL
(
SELECT id, CASE language WHEN 'f' THEN 'nl' ELSE 'nl' END lang, display_name
FROM portal.wwsbr_all_folders p
WHERE caid = 55
AND DISPLAY_IN_PARENT_FOLDER = 1
AND ((language = 'nl' and exists(SELECT * FROM portal.wwsbr_all_folders p2 WHERE p2.id = p.id AND language = 'nl'))
OR (language = 'f' and not exists(SELECT * FROM portal.wwsbr_all_folders p2 WHERE p2.id = p.id AND language = 'nl')))
AND parent_id = 4656102)
답변 주셔서 감사합니다, 나는 방금 올바른 결과를 반환 또 다른 해결책을 발견. 어떤 것이 더 낫다는 것 (옵티마이 저 및로드)을 알지 못합니다 ... '질문'에서 편집하십시오. – Verthosa
@Verthosa 제 솔루션이 더 빠를 것 같고, 당신의 서브 쿼리가 더 많습니다. –
tnx 많은 사람 !! – Verthosa