id, document_id 및 file_name이 포함 된 doc_source 테이블이 있습니다.
file_name에는 * pdf, * dgn, * doc 등과 같은 다양한 파일 유형이 포함되어 있습니다. * pdf 파일과 * pdf 파일 만있는 모든 문서를 가져 오는 쿼리를 작성해야합니다. 즉, 다음 데이터가 있다고 가정 해 보겠습니다.
ID DOCUMENT_Id FILE_NAME
1 100 abc.pdf
2 100 def.doc
3 200 ghi.pdf
4 300 jkl.pdf
5 300 mno.doc
pdf 만있는 모든 문서를 가져오고 싶습니다. 따라서이 경우에는 pdf 만 있고 다른 파일 유형은없는 유일한 문서 ID 200 만 추출하는 쿼리를 원합니다.
나는 이와 같은 것을 시도했지만 분명히 옳지 않은 것이 있습니다.
WITH T1 AS (SELECT DOCUMENT_ID, FILE_NAME FROM DOC_SOURCE)
SELECT DOCUMENT_ID, FILE_NAME FROM DOC_SOURCE AS T2
WHERE FILE_NAME LIKE '%PDF'
GROUP BY DOCUMENT_ID, FILE_NAME
HAVING COUNT(DOCUMENT_ID) = (SELECT COUNT(DOCUMENT_ID) FROM T1)
나는 사용 group by
하고 having
:
select document
from t
group by document
having sum(case when file_name like '%.pdf' then 1 else 0 end) = count(*);
즉, pdf로 끝나는 각 문서의 파일 이름 수는 총 문서 수와 같습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다