毎日各従業員のクロックインとクロックアウトを調べる必要があります。それは2シフトを持ち、最初のシフトは0830 - 2030から始まり、2番目のシフトは2030 - 0830(翌日)からです。以下は、私が持っているサンプルレコード、 異なるシフトのタイムインとタイムアウトの選択
Time In Time Out User
2017-06-16 07:30:00.000 2017-06-16 08:30:00.000 I0495
2017-06-16 08:30:00.000 2017-06-16 12:30:00.000 I0495
2017-06-16 13:00:00.000 2017-06-16 15:30:00.000 I0495
2017-06-16 15:30:00.000 2017-06-16 19:00:00.000 I0495
2017-06-16 20:30:00.000 2017-06-16 21:30:00.000 I0603
2017-06-16 21:30:00.000 2017-06-17 00:00:00.000 I0603
2017-06-17 00:00:00.000 2017-06-17 00:30:00.000 I0603
2017-06-17 01:30:00.000 2017-06-17 04:30:00.000 I0603
2017-06-17 05:30:00.000 2017-06-17 08:30:00.000 I0603
2017-06-17 07:30:00.000 2017-06-17 08:30:00.000 I0495
2017-06-17 08:30:00.000 2017-06-17 12:30:00.000 I0495
2017-06-17 13:00:00.000 2017-06-17 15:30:00.000 I0495
2017-06-17 15:30:00.000 2017-06-17 19:00:00.000 I0495
は、私は私が得る結果
Select min(tbl.timein), max(tbl.timeout), tbl.user form
(
Select timein, timeout, user from tbl where timein >= '2017-06-16
07:00:00' and timeout <= '2017-06-16 20:30:00'
union all
Select timein, timeout, user from tbl where timein >= '2017-06-16
20:60:00' and timeout <= '2017-06-17 08:30:00'
)tbl
group by tb.user
以下のようにクエリを試すには、これを下回ると予想されていないと何されている
2017-06-16 07:30:00.000 2017-06-17 08:30:00.000 I0495
2017-06-16 20:30:00.000 2017-06-17 08:30:00.000 I0603
2017-06-17 07:30:00.000 2017-06-18 08:30:00.000 I0495
期待される結果are
どのように私はこれを行うことができます任意のアイデア。ありがとう。
SQL Serverのバージョンを使用していますか? –
最初のシフトが「8:30 am」から始まる場合、期待される結果セットで「7:30 am」から範囲を報告するのはなぜですか? –
@TimBiegeleisen一部の従業員が早期に入居を要求するため、午前7時に入居することがあります。これは私が期待した結果を得ることができない問題です –