我有这个问题。让我们看看查询:针对主详细查询结果的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。 。 。谢谢。 –