繁体   English   中英

检索具有特定值的最新记录

[英]Retrieving latest records with specific values

我是tryint要做的基本上是一个事件列表。 在每个事件上,都有多个条件和几个键。 我想使用该特定行具有的值来检索每个唯一键的最新记录。 我试过的

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。

但是,如果我在选择中使用b.terminal,我必须将其分组,到那时它不会给我真正正确的终端,但是会抓到错误的终端。

所以这里的问题是,我如何真正使它属于我以前使用过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_number()

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;

. . . . . . 用于所需的列。 请注意,我还将表别名更改为表名的缩写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM