さまざまなステータスタイプのタイムスタンプを保存するテーブルを使用していますが、ピボットして、各従業員の実際の「忙しい」時間をより明確に把握したい...(作業負荷/統計を実行できるようにするため)
いくつかの注意事項があります..
従業員は進行中の自分自身を誤って 2 回割り当てることができます (サンプル データの EMP1 の行 5 を参照)。ピボットで最も早い時間を使用したい
従業員は自分自身を FRO または FRV として設定できます (どちらも新しい割り当てに対して自由であることのバリエーションです)。そのため、従業員が FRO または FRV であるかどうかにかかわらず、FREE 列に 2 つのステータス タイプのいずれかを表示する必要があります。
ステータスの種類:
- ST = 開始/指定
- IP = 進行中の作業
- FRV = 車内無料
- FRO = オフィス内は無料
ステータス テーブルのサンプル データ:
DateTime emp status
3/26/2017 14:20:30 EMP1 ST
3/26/2017 14:21:16 EMP1 FRO
3/26/2017 14:26:11 EMP1 ST
3/26/2017 14:26:42 EMP1 IP
3/26/2017 14:26:45 EMP1 IP
3/26/2017 14:28:35 EMP1 FRO
3/26/2017 14:21:15 EMP2 ST
3/26/2017 14:22:35 EMP2 IP
3/26/2017 14:55:53 EMP2 FRV
3/26/2017 14:20:48 EMP3 ST
3/26/2017 14:23:49 EMP3 FRV
ピボット後の望ましい結果は次のようになります:
(ST = 開始、IP = 進行中の作業、FREE = ビジーではない)
emp ST IP FREE
EMP1 3/26/2017 14:20:30 null 3/26/2017 14:21:16
EMP1 3/26/2017 14:26:11 3/26/2017 14:26:42 3/26/2017 14:28:35
EMP2 3/26/2017 14:21:15 3/26/2017 14:22:35 3/26/2017 14:55:53
EMP3 3/26/2017 14:20:48 null 3/26/2017 14:23:49
サンプル データを含むテスト テーブル。
CREATE TABLE test (
[DateTime] [datetime] NULL,
[emp] [varchar](6) NOT NULL,
[status] [varchar](6) NOT NULL
)
INSERT INTO test values
('2017-03-26 14:20:30.000', 'EMP1', 'ST'),
('2017-03-26 14:21:16.000', 'EMP1', 'FRO'),
('2017-03-26 14:26:11.000', 'EMP1', 'ST'),
('2017-03-26 14:26:42.000', 'EMP1', 'IP'),
('2017-03-26 14:26:45.000', 'EMP1', 'IP'),
('2017-03-26 14:28:35.000', 'EMP1', 'FRO'),
('2017-03-26 14:21:15.000', 'EMP2', 'ST'),
('2017-03-26 14:22:35.000', 'EMP2', 'IP'),
('2017-03-26 14:55:53.000', 'EMP2', 'FRV'),
('2017-03-26 14:20:48.000', 'EMP3', 'ST'),
('2017-03-26 14:23:49.000', 'EMP3', 'FRV')
リクエストがあいまいすぎる場合は、さらに説明していただければ幸いです......
ありがとう