【发布时间】:2018-05-11 20:44:17
【问题描述】:
所以我有一个独特的查询,可以将我的列表缩小到我所追求的范围内,但有时最后一个表可能有 3 个正确的选择,而我只想要最近出现的。
当前查询:
SELECT DISTCINT
D.Filename, S.Name AS State, W.Name AS 'Workflow Name', U.Username AS 'Name',
CONVERT(VARCHAR, TH.Date, 101) AS [Entered State],
DATEDIFF(dd, TH.Date, GETUTCDATE()) AS [Days In State]
FROM
Status AS S
INNER JOIN
Documents AS D ON D.CurrentStatusID = S.StatusID
INNER JOIN
Workflows AS W ON W.WorkflowID = S.WorkflowID
INNER JOIN
TransitionHistory AS TH ON D.DocumentID = TH.DocumentID
AND D.LatestRevisionNo - 1 = TH.RevNr
INNER JOIN
Users AS U ON U.UserID = TH.UserID
WHERE
d.Filename NOT LIKE '%test%'
AND d.filename NOT LIKE '%^%'
AND S.Name IN ('Initiated', 'Design Review', 'Change Pending Approval',
'Under Editing', 'Waiting for Approval', 'Under Change',
'ECO Design Review', 'Minor Change no Revision',)
AND W.Name IN ('Production')
ORDER BY
Filename
例如,如果我选择一个特定文件(见图),您可以看到结果:
您可以在最后一个表中看到结果产生了 3 行符合条件,我正在尝试找到一种简单的方法让它匹配我的所有条件,然后只输出最高的 TransitionNr 或最新的日期。
我不是 SQL 人,我是从谷歌搜索中整理出来的 - 但我似乎找不到最后的部分。
感谢您的帮助。
【问题讨论】:
-
请提供示例数据和预期结果 - 我怀疑您需要在此处进行分区并仅过滤顶部的一个
-
如果你甚至不关心你可能使用的结果的分组..
SELECT * FROM TransitionHistory WHEREDocumentID = 54666 andRevNr = 1 GROUP BY DocumentID,或者在你的哪里添加其他条件来选择你想要的结果 -
对不起,数据表都很大,我目前的输出超过10k行。该图像只是显示了一个特定查询的示例,我在使用 select distinct 时使用它来找出为什么我的结果包含重复项。
-
您的图片似乎与查询无关...
标签: sql-server tsql date distinct