sql - Laravel SQL Problem (I want to specify Last IN and Last OUT time from date)
问题描述
My SQL Table Data Is
UserID Timestamp EventTrigger
0000003 2019-08-27 08:57:23.000 IN
0000003 2019-08-27 09:07:23.000 OUT
0000003 2019-08-27 09:10:24.000 IN
0000003 2019-08-27 18:05:21.000 OUT
I want to make Output like
UserID Date Last-IN Last-OUT
3 2019-08-27 09:10:24 18:05:21
解决方案
正如其他人所说,你需要更具体一点,以便人们能够给出好的答案,但如果你只想要一个 SQL 语句来提供我认为你所要求的输出,那么这应该可以解决问题:
select
UserId,
[IN] as [Last-IN],
[OUT] as [Last-OUT]
from
(
select
convert(int,UserId) as UserID,
EventTrigger,
max([Timestamp]) as LastDate
from inout
group by UserId, EventTrigger
) SourceTable
PIVOT
(
max(LastDate)
for EventTrigger in ([IN],[OUT])
) as PivotTable
这是基于您的基础表定义和数据如下:
create table inout
(
UserId varchar(10),
[Timestamp] datetime,
EventTrigger varchar(3)
)
insert into inout values
('000003','2019-08-27 08:57:23.000','IN'),
('000003','2019-08-27 09:07:23.000','OUT'),
('000003','2019-08-27 09:10:24.000','IN'),
('000003','2019-08-27 18:05:21.000','OUT')
您可以使用子查询同样获得相同的结果:
select distinct
convert(int,UserId) as UserID,
(select max([Timestamp]) from inout lastin where a.UserId = lastin.UserId and lastin.EventTrigger = 'IN') as [Last-IN],
(select max([Timestamp]) from inout lastout where a.UserId = lastout.UserId and lastout.EventTrigger = 'OUT') as [Last-OUT]
from inout a
或者可能通过一些其他方法,如自连接,或对每个 EventTrigger 值的单独查询......
推荐阅读
- java - 如何使用 neo4j cypher 和 java 进行批量插入
- ruby-on-rails - Rails 如何对一个模型的多个请求执行 SQL 查询?
- c# - unity旋转转换
- node.js - NodeJS 异步回调已被调用
- reactjs - 如何创建动态样式的组件?
- react-native - 如何在 React Native 中使用动态样式类
- javascript - 如何使用异步生成器功能使客户端超时?
- azure - Azure Sphere 如何在嵌入其他 MCU 的混合系统中提供安全性?
- php - 将数据加载到 html 类中
- c - 为什么我的 C 程序没有得到想要的输出?