2017-02-22 5 views
2

私は指紋センサーからこのテーブルを持っていると私は一列に次のように必要な行をSQL​​ Serverの列に変換する方法は?

ID | DateTime    | Flag 
---------------------------------------- 
41 | 2017-02-22 08:05:56.000 | I 
41 | 2017-02-22 18:11:03.000 | O 

結果結果を表示する必要があります。

ID | IN-DateTime    | OUT-DateTime   
-------------------------------------------------------- 
41 | 2017-02-22 08:05:56.000 | 2017-02-22 18:11:03.000 

を誰も私を助けることができますか?

単純な集計が何をすべき

答えて

4

select id, 
    max(case when flag = 'I' then datetime end) indatetime, 
    max(case when flag = 'O' then datetime end) outdatetime 
from t 
group by id; 

それともたい場合は、ピボットを使用することができます。

select id, [I] indatetime, [O] outdatetime 
from t pivot (
    max(datetime) for flag in ([I],[O]) 
) as p 
+0

ありがとうございました。今それは働いている。 –

2

別の方法としては、COLUMNSROWSを回すために特別に開発されたPIVOTを、使用することができます。

SELECT id 
    , [I] as [IN-DateTime] 
    , [O] as [OUT-DateTime] 
FROM Table t 
PIVOT (max(dateTime) for flag in ([I], [O])) as pvt; 
関連する問題