Sql 从预订表中获取进出日期
例如,我有这种桌子 ---------------------------------------------------------------------- | ID | USER | READER | DATETIME | ---------------------------------------------------------------------- | 1 | 1 | READER1 | 2020-01-14 08:12:43.000 | | 1 | 1 | READER2 | 2020-01-14 08:13:12.000 | | 1 | 1 | READER2 | 2020-01-14 10:12:19.000 | | 1 | 1 | READER1 | 2020-01-14 10:13:23.000 | | 1 | 1 | READER1 | 2020-01-14 10:30:43.000 | | 1 | 1 | READER1 | 2020-01-14 11:30:43.000 | ---------------------------------------------------------------------- ---------------------------------------------------------------------- |ID |用户|读卡器|日期时间| ---------------------------------------------------------------------- |阅读者2020-01-14 08:12:43.000| |1 | 1 | READER2 | 2020-01-14 08:13:12.000| |1 | 1 | READER2 | 2020-01-14 10:12:19.000| |阅读者2020-01-14 10:13:23.000| |阅读者2020-01-14 10:30:43.000| |阅读者2020-01-14 11:30:43.000| ---------------------------------------------------------------------- 我想获得每个阅读器的用户的输入和输出日期 例如: ------------------------------------------------------------------------------------- | USER | READER | IN | OUT | ------------------------------------------------------------------------------------- | 1 | READER1 | 2020-01-14 08:12:43.000 | 2020-01-14 10:13:23.000 | | 1 | READER2 | 2020-01-14 08:13:12.000 | 2020-01-14 10:12:19.000 | | 1 | READER1 | 2020-01-14 10:30:43.000 | 2020-01-14 11:30:43.000 | ------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------- |用户|读卡器|输入|输出| ------------------------------------------------------------------------------------- |1 | READER1 | 2020-01-14 08:12:43.000 | 2020-01-14 10:13:23.000| |1 | READER2 | 2020-01-14 08:13:12.000 | 2020-01-14 10:12:19.000| |1 | READER1 | 2020-01-14 10:30:43.000 | 2020-01-14 11:30:43.000| -------------------------------------------------------------------------------------Sql 从预订表中获取进出日期,sql,sql-server,tsql,Sql,Sql Server,Tsql,例如,我有这种桌子 ---------------------------------------------------------------------- | ID | USER | READER | DATETIME | ---------------------------------------------------------------------- | 1 | 1
如何获得此结果?我知道您希望对同一用户/读取器的每两条记录进行分组。您可以使用
row\u number()
和lead()
进行以下操作:
select usr, reader, datetime [in], lead_datetime [out]
from (
select
t.*,
row_number() over(partition by usr, reader order by datetime) rn,
lead(datetime) over(partition by usr, reader order by datetime) lead_datetime
from mytable t
) t
where rn % 2 = 1
order by [in]
:
usr | reader | in | out
--: | :------ | :------------------ | :------------------
1 | READER1 | 2020-01-14 08:12:43 | 2020-01-14 10:13:23
1 | READER2 | 2020-01-14 08:13:12 | 2020-01-14 10:12:19
1 | READER1 | 2020-01-14 10:30:43 | 2020-01-14 11:30:43
usr读取器输入输出
--: | :------ | :------------------ | :------------------
1 | READER1 | 2020-01-14 08:12:43 | 2020-01-14 10:13:23
1 |读写器2 | 2020-01-14 08:13:12 | 2020-01-14 10:12:19
1 | READER1 | 2020-01-14 10:30:43 | 2020-01-14 11:30:43
如果每个用户有两条以上的记录,您希望在结果集中有多少条记录?用更多的记录扩展您的示例数据可能会使ie更具代表性。我们渴望帮助,关键字是帮助-而不是为您做所有事情。让我们看看你尝试了什么,在哪里卡住了