2011-11-10 11 views
0

フィールド名、ID、日付、intime/outtime、datetimeを持つテーブルがあります。sqlqueryを使用してintimeとoutitmeを取得する方法

これでは、最初のintime、last outtime、およびすべての従業員の最初のintimeと最後のouttimeの間の期間を見つける必要があります。

従業員がスワイプインされた場合、これは彼の1番目のインテムです。彼が外出した場合、それは彼の外出です。だから、1日の終わりに、彼の最終的な外出時間、そして、1回目のイントムと最後のアウトタイムからの継続時間が計算されなければならない。

私がdatetimeの最小値を取ったとき、私は1番目のintimeを得ました。しかし、私が外出時間を最大限に取ると、私は現在の状態を得ることができます。

私は最後の時間を取得する必要がありますが、

+0

持続時間を定義します。 intime/outtimeは2つの異なる列または同じ列ですか?同じであれば、ビジネスはインタイムかアウトタイムかを識別することができますか? – Zohaib

+0

ifそれが1で表示されている場合その他2 – user1037721

答えて

1
select name,MAX(convert(char(8),datetimecolumn,108)as outtime,MIN(convert(char(8),datetimecolumn,108) as intime , 
    (MAX(convert(char(8),datetimecolumn,108) - MIN(convert(char(8),datetimecolumn,108))AS duration from Table 

OR

SELECT name,intime/outime 
(SELECT MAX([convert(char(8),datetimecolumn,108]) AS outtime FROM ... WHERE ...) 
- (SELECT MIN([convert(char(8),datetimecolumn,108]) AS inTime FROM ... WHERE ...) 
AS duration from TABLE 
+0

こんにちはこのin/outは、ステータスとしてintimeを取得する単一のフィールドです(convert(char(8)、DateTime、108)intime – user1037721

+0

ok更新されたものを確認してください – dude

+0

これは最初の時間と最後の時間をbuにすると、これがOutに表示されるので、その値を取得する必要があります – user1037721

1
SELECT name, date , MIN(convert(char(8),datetimecolumn,108) AS intime , MAX(convert(char(8),datetimecolumn,108) AS outtime, (outtime -intime) as duration 
FROM myTable 
GROUP BY name, date 
+0

こんにちは回答 – user1037721

+0

あなたは答えを見つけることができますか?あなたの答えを追加し、答えとしてそれを受け入れます。 – Damith

0

おそらくこのような何か:

SELECT 
    name, 
    date, 
    FirstInTime = MIN(CASE [intime/outtime] WHEN 1 THEN datetime END), 
    LastOutTime = MAX(CASE [intime/outtime] WHEN 2 THEN datetime END) 
FROM atable 
GROUP BY 
    name, 
    date 

最初のイベントは、インタイムは常にある場合、FirstInTime列は単にとして定義することができ

… 
    FirstInTime = MIN(datetime), 
    … 
関連する問題