我在 SQL Server 中有一个日志表。表的结构是这样的:
Unique ProblemID ResponsibleID AssignedToID ProblemCode
155 155 0282 4
156 155 0900
157 155 3
158 155 0147 1
159 159 0111 2
160 159 0333 4
161 159 0900 1
所以基本上我们记录所有问题以及谁负责/必须处理问题。
我需要一个查询来找出一个人所涉及的问题:
例如:
另外我忘了提到我需要通过 ProblemCode 过滤 ProblemID 的最后一行。例如,找到涉及人员的问题 ID,但该问题最后一个日志行中的 ProblemCode 为 1(这意味着问题现已关闭)。
此外,我正在处理查询:
select ProblemID, EntryTime, ResponsibleID, ProblemCode, AssignedToID
from (select ProblemID, EntryTime, ResponsibleID, ProblemCode, AssignedToID,
row_number() over(partition by ProblemID order by EntryTime desc) as rn
from myTable) as T
where rn = 1 and ResponsibleID = '00282' OR AssignedToID = '00282'
and veiksmoid <> 4
但是,它只匹配最后一行。
最佳答案
这为您提供了一个人 0900 处理的所有问题,并且在他们的最后一行中有问题代码 = 1。我无法对其进行测试,因此可能存在一些错误。
SELECT problemID FROM <table> t1
WHERE problemID IN (
SELECT problemID FROM <table>
WHERE (ResponsibleID = 0900 OR AssignedToID = 0900))
AND problemCode = 1
AND unique = (SELECT MAX(unique) FROM <table> WHERE problemID = t1.problemID)
关于sql - 如果找到 USER,则选择最后一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7927747/