以下のようなテーブルがあります。
datatime in_out
---------------------
08:00 IN
08:30 OUT
09:30 OUT
10:00 IN
10:30 OUT
SQL Serverクエリの後で、次のようなものを取得する可能性はありますか?
IN OUT
---------------
08:00 08:30
NULL 09:30
10:00 10:30
私は解決策を見つけるために約2週間を費やしました。私は初心者です。単一の解決策はmin
ありましたmax
が、それは私を助けませんでした。
これはrow_numberingを使用してそれを解決します:
with Ordered as (
select *, rn = row_number() over (order by datatime)
from Input
)
select
[In] = o_in.datatime
, [Out] = o_out.datatime
from Ordered o_out
left join Ordered o_in
on o_in.rn = o_out.rn - 1
and o_in.in_out = 'IN'
where o_out.in_out = 'OUT'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加