Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 检索具有特定值的最新记录_Sql_Sql Server_Ssms_Ssms 2017 - Fatal编程技术网

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;