我有一个这样的日志表:
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)
更有效的代码?
非常感谢你的回答......
答案 0 :(得分:0)
试试这个
select min(date) from MYTABLE where Type=@lasttype
group by Type
答案 1 :(得分:0)
我想如果您想上次检索,最好使用max而不是min函数,请查看以下内容:
select top 1 type,max(date) as date from MYTABLE group by type order by max(date) desc
答案 2 :(得分:0)
好的,我可以得到第6行:
select min(date) from MYTABLE where date > (select max(date) from MYTABLE where type <> @lasttype)
更有效的代码?
非常感谢你的回答......
答案 3 :(得分:0)
尝试运行此查询
select max(a.Date) from
(
Select top 4 * from table order by Date desc
)a;