1
私は複数の従業員のためにクロック・イン/アウトの時間を保持するテーブルを持っている:mssql - 同じ行に列の値を表示するには、内部結合を使用しますか?
username datetime action
test.user 2016-10-05 07:30:49 0
test.user 2016-10-05 08:50:00 1
test.user 2016-10-05 08:53:49 0
test.user 2016-10-05 13:35:47 1
は、私は、ユーザー名を含む行ごとに結果セットを取得すると、そのユーザ名のイン/アウトの操作で時計のペア(0はクロックイン、1はクロックアウト)。
私はこれまで持っていることはこれです:
select a.username, a.datetime as clockIN, b.datetime as clockOUT
from attendance a
inner join
attendance b
on
(
a.username = b.username
and datepart(dd, a.datetime) = datepart(dd, b.datetime)
and datepart(mm, a.datetime) = datepart(mm, b.datetime)
and datepart(yy, a.datetime) = datepart(yy, b.datetime)
and a.action = 0
and b.action = 1
and a.datetime < b.datetime
)
order by a.datetime asc
そして、これが
username clockIN clockOUT
test.user 2016-10-05 07:30:00 2016-10-05 08:50:00
test.user 2016-10-05 07:30:00 2016-10-05 13:35:47
test.user 2016-10-05 08:53:49 2016-10-05 13:35:47
望ましい結果は以下のようになり、結果です:
username clockIN clockOUT
test.user 2016-10-05 07:30:00 2016-10-05 08:50:00
test.user 2016-10-05 08:53:49 2016-10-05 13:35:47
OMMITする方法上の任意のアイデア結果から2番目の行?
ありがとうございます!
番目のレコードが省略されていることにより、ロジックとは何ですか? –
2つのクロック出力の値が同じで、clockIN値が異なる場合はどうなりますか? – jarlh
私は混乱しています...ユーザーは同時に2回チェックインし、異なる時間にチェックアウトしますか?または、ユーザーを分けていますか? – Danieboy