簡體   English   中英

SQL查詢從多值列中提取數據,但前提是它滿足特定條件

[英]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 byhaving

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM