【问题标题】:SQL: Find min date of a last type changeSQL:查找最后一次类型更改的最小日期
【发布时间】:2016-04-28 21:50:01
【问题描述】:

我有一个这样的日志表:

line    Date                    status  Type
1   26.04.2016 08:58    IN  4
2   26.04.2016 08:59    OUT 80
3   26.04.2016 09:05    REZ 7
4   26.04.2016 09:06    IN  7
5   26.04.2016 09:22    EDIT    81
6   26.04.2016 09:23    EDIT    80
7   26.04.2016 09:24    OUT 80
8   26.04.2016 09:25    OUT 80
9   26.04.2016 09:25    OUT 80

“日期”是关键。

我想获得最后一次类型更改日期。在此示例中,最后一个类型是“80”,它的最小日期是 26.04.2016 09:23(第 6 行)。

我知道此时的最后一种类型 (@lasttype = 80)。 但是如果我运行select min(date) from table where type = @lasttype,那么我会得到第 2 行而不是第 6 行。

如何在一个查询中获取最后一个“类型”块(第 6 行)的最小日期?我不想在之后使用几个选择。

我刚刚尝试过,但第 6 行不再出现:(

select max(date)
from
(
    select min(date) as date, type
    from MYTABLE
    where type = '80'
    group by type
) as t1

有什么简单的方法吗?

非常感谢。

编辑: 好的,我可以得到第 6 行:

select min(date) from MYTABLE where date > (select max(date) from MYTABLE where type <> @lasttype)

还有更有效的代码吗?

非常感谢您的回答...

【问题讨论】:

  • 你使用的是什么 rdbms?
  • 微软 Sql 2014
  • 为什么第 6 行是 Type 80 的最小值?第 2 行的时间比这要短。另外,“最后一次类型更改日期”是什么意思?状态列在您的需求中是否起任何作用?
  • 嗨,Akanksha,我必须找到最后一次更改类型的时间。在这个例子中,首先是“4”,然后变成“80”,然后变成“7”....但是在09:23它已经变成了“80”(第6行)。在第 7-8-9 行,类型没有改变。所以,我试着找到第 6 行。

标签: sql sql-server sql-server-2014


【解决方案1】:

试试这个

select min(date) from MYTABLE where Type=@lasttype
group by Type

【讨论】:

  • 对不起,它返回第 2 行。我想获取最后一个类型块的最小日期(必须在第 6-7-8-9 行中获取第 6 行)。
【解决方案2】:

我认为如果你想检索最后一次,你最好使用 max 而不是 min 函数,检查以下:

select top 1 type,max(date) as date from MYTABLE group by type order by max(date) desc

【讨论】:

  • 不。我返回第 9 行。我想获取最后一个类型块的最小日期(必须在第 6-7-8-9 行中获取第 6 行)。
【解决方案3】:

好的,我可以得到第 6 行:

select min(date) from MYTABLE where date > (select max(date) from MYTABLE where type <> @lasttype)

还有更有效的代码吗?

非常感谢您的回答...

【讨论】:

    【解决方案4】:

    尝试运行此查询

    select max(a.Date) from 
    (
     Select top 4 * from table order by Date desc
    )a;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-12
      • 2014-07-04
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多