我的SQL代码正在返回Max t。[CreatedDateTime](见下文)给我正确的结果,但是我想添加一个额外的列t。[Owner]而不是在结果中显示[CreatedDateTime]但仍然将结果基于Max([t.CreatedDateTime])
SELECT i.[RecID] as AssigneeID, max(t.[CreatedDateTime]) CreatedDateTime
FROM Incident as i
Join Task as t On i.[RecID] = t.[ParentLink_RecID]
WHERE i.[Status] <> 'Closed'
AND t.[OwnerTeam] IS NOT NULL
group by i.[RecID]
Order By i.[RecID] DESC
当前结果
AssigneeID CreatedDateTime
FFFE53B2305D47388937D1F5B6722DF3 2013-05-13 14:36:55.000
FFD64AD977A449258A88B9A404795631 2013-05-21 14:11:28.000
FFD557F622A34FD1A386B427B66ADAFC 2013-04-26 12:32:05.000
必填结果
AssigneeID Owner
FFFE53B2305D47388937D1F5B6722DF3 Bob
FFD64AD977A449258A88B9A404795631 Fred
FFD557F622A34FD1A386B427B66ADAFC Harry
提前感谢您的任何帮助..
答案 0 :(得分:0)
您可以将当前查询结果与记录ID列上的任务表(获取所有者列数据)结合起来。 例如:
select t1.AssigneeID, t2.Owner from (your current query) t1, Task t2 where t1.AssigneeID = t2.ParentLink_RecID
order by 1 desc
Full ex:
select t1.[AssigneeID] as AssigneeID, t2.[Owner] as Owner
from Task t2
LEFT JOIN (SELECT I. [RecID] as AssigneeID, max(t.[CreatedDateTime]) CreatedDateTime FROM Incident as i Join Task as t On i.[RecID] = t.[ParentLink_RecID] WHERE i.[Status] <> 'Closed' AND t.[OwnerTeam] IS NOT NULL group by i.[RecID]) t1
on t2.[ParentLink_RecID] = t1.[AssigneeID]
order by t1.[AssigneeID] desc
答案 1 :(得分:0)
尝试:
SELECT AssignedID, Owner
FROM
(
SELECT i.[RecID] as AssigneeID, max(t.[CreatedDateTime]) CreatedDateTime, t.[Owner]
FROM Incident as i
Join Task as t On i.[RecID] = t.[ParentLink_RecID]
WHERE i.[Status] <> 'Closed'
AND t.[OwnerTeam] IS NOT NULL
group by i.[RecID]
) S
Order By AssignedID DESC
答案 2 :(得分:0)
您没有说,但基于[columnName]语法,看起来您正在使用MS SQLServer。如果是这样,那么您可以使用RANK()或ROW_NUMBER()来获得有效的解决方案。
with rankedResult as (
select i.[AssigneeID],
t.[Owner],
row_number() over( partition by i.[AssigneeID]
order by t.[CreatedDateTime] desc, t.[Owner] ) seq
from Incident i
join Task t
on t.[ParentLink_RecID] = i.[RecID]
where i.[Status] <> 'Closed'
and t.[OwnerTeam] is not null
)
select [AssigneeID],
[Owner]
from rankedResult
where seq=1
;
答案 3 :(得分:0)
试试这个
SELECT x.AssigneeID, tt.Owner
FROM (
SELECT i.[RecID] as AssigneeID, max(t.[CreatedDateTime]) CreatedDateTime
FROM Incident as i
Join Task as t On i.[RecID] = t.[ParentLink_RecID]
WHERE i.[Status] <> 'Closed'
AND t.[OwnerTeam] IS NOT NULL
group by i.[RecID]
) x
JOIN Task as TT ON (x.RecID = tt.ParentLine_RecID)
ORDER BY x.AssigneeID DESC