[英]Need sql query to pull back data that meets several groups of criteria from same table in one query
[英]SQL query to pull data from multi-value column but only if it meets specific criteria
我有一個表doc_source,其中包含id,document_id和file_name。
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的文檔。 因此,在這種情況下,我想要一個僅提取Doc Id 200的查詢,因為這是僅有PDF且沒有其他文件類型的唯一查詢。
我嘗試做這樣的事情,但顯然不完全正確:
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結尾的每個文檔的文件名數量等於文檔總數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.