我有這個問題。讓我們看看查詢:針對主詳細查詢結果的SQL Server條件查詢
SELECT
D.DocumentName,
D.Title,
D.Description,
V.Version,
CASE
WHEN V.State = 'PUB' THEN 'PUBLISHED'
WHEN V.State = 'UNP' THEN 'UNPUBLISHED'
WHEN V.State IS NULL THEN 'NOT PUBLISHED'
ELSE ''
END AS State
FROM
Document D
LEFT JOIN
DocumentVersion V ON D.IdDocument = V.IdDocumentVersion
這是一個典型的主 - 細節表(Document-DocumentVersion)。 A Document
可以有一個或多個DocumentVersions
或沒有。 A DocumentVersion
狀態可以是PUBLISHED
或UNPUBLISHED
。 PUBLISHED
一個DocumentVersion
只能存在一次Document
(這是由應用程序控制),但可以存在很多UNPUBLISHED
,或者所有DocumentVersions
都是UNPUBLISHED
。 NOT PUBLISHED
不存在,當Document
沒有DocumentVersion
記錄時,這只是查詢結果中的一個單詞,這就是LEFT JOIN
的原因。
所以我的問題是:我如何使查詢完成下一個規則?
如果
DocumentVersion
狀態PUB
,忽略了別人,我的意思是不顯示UNP
那些在查詢結果用於本Document
如果
DocumentVersion
狀態UNP
(這裏可許多UNP
),那麼只顯示最高日期爲Unpublish
(DocumentVersion
表格有UnPublishDate
列),此規則適用於沒有PUB
DocumentVersion
的文檔
我將不勝感激任何幫助,你可以給我,謝謝你們。
與您的方法'UNP'的顯示狀態的UnPublishedDate最低,我需要最高的一個,另外我需要的情況下,當DocumentVersion不是文檔,因此我使用LEFT JOIN。 –
哦,我認爲Gordon剛剛錯過了'UnPublishDate desc',並且需要做一個左外連接。我的查詢幾乎相同 –
@VorpulusLyphane。 。 。謝謝。 –