Sql 检索具有特定值的最新记录
我试着做的是基本上有一个事件列表。每个事件都有多个标准和多个键。我想用特定行的值检索每个唯一键的最新记录。我所尝试的:Sql 检索具有特定值的最新记录,sql,sql-server,ssms,ssms-2017,Sql,Sql Server,Ssms,Ssms 2017,我试着做的是基本上有一个事件列表。每个事件都有多个标准和多个键。我想用特定行的值检索每个唯一键的最新记录。我所尝试的: SELECT max(b.event_time) AS 'tidpunkt' ,b.sin ,a.ino INTO #timer_remove_whom_all FROM #int a JOIN log b ON a.sin = b.sin WHERE a.deal_id = 'PSE' AND convert(DATE, dateadd(second,
SELECT max(b.event_time) AS 'tidpunkt'
,b.sin
,a.ino
INTO #timer_remove_whom_all
FROM #int a
JOIN log b ON a.sin = b.sin
WHERE a.deal_id = 'PSE'
AND convert(DATE, dateadd(second, b.event_time, '800101'), 102) = convert(DATE, getdate() - 2, 102)
GROUP BY b.sin
,a.ino
返回:
tidpunkt sin ino
1212649647 3566454 554
这将检索我想要的特定记录。但在本例中,我需要该行中的另一个参数,如terminal,在本例中
但是如果我在select中使用b终端,我必须对它进行分组,在这一点上,它不会给我实际正确的终端,而是抓住了错误的终端
所以这里的问题是,我实际上如何使它接受属于我之前使用max(b.event_time)的行的b.terminal
我所拥有的:
tidpunkt sin ino terminal
1212649647 3566454 554 bandy
1212642065 3566454 554 hockey
我想回报的是:
tidpunkt sin ino terminal
1212649647 3566454 554 bandy
返回的内容:
tidpunkt sin ino terminal
1212649647 3566454 554 hockey
请注意,终端如何不属于它的其余部分。因此,我的团队不是前进的方向。我真诚地希望有某种方法可以获取与所使用的聚合函数相关的记录,但现在我不能再单独讨论了您想要的row\u number()
:
代码>用于所需的列。注意,我还将表别名更改为表名的缩写。您想要行号()
:
代码>用于所需的列。请注意,我还将表别名更改为表名的缩写。@stoff。什么是术语?啊,术语=终端。对不起,不清楚,不知道我是怎么做到的。不管怎么说,我似乎把我的加入搞砸了,所以经过一些调整,我让你的解决方案对我来说非常有效。谢谢你的帮助@斯托夫。什么是术语?啊,术语=终端。对不起,不清楚,不知道我是怎么做到的。不管怎么说,我似乎把我的加入搞砸了,所以经过一些调整,我让你的解决方案对我来说非常有效。谢谢你的帮助!
SELECT . . .
INTO #timer_remove_whom_all
FROM (SELECT . . .,
ROW_NUMBER() OVER (PARTITION BY l.sin, i.ino ORDER BY l.event_time DESC) as seqnum
FROM #int i JOIN
log l
ON i.sin = l.sin
WHERE i.deal_id = 'PSE' AND
convert(DATE, dateadd(second, l.event_time, '800101'), 102) = convert(DATE, getdate() - 2, 102)
) il
WHERE seqnum = 1;