従業員の遅延とOTを取得するための適切なSQLステートメント

ルーカスファン

これが現時点での私のSQLクエリです:

select Employee_Number, Cast([DateTime] as Date) as 'DateTime', MIN([DateTime]) as 'MIN', MAX([DateTime]) as 'MAX' , [Hours Worked] =
CAST((DATEDIFF(HOUR ,min([DateTime]), max([DateTime])) / 24) AS VARCHAR) +
' Days ' +
CAST((DATEDIFF(HOUR , min([DateTime]),  max([DateTime])) % 24) AS VARCHAR) +
' Hours ' +
CAST((DATEDIFF(MINUTE, min([DateTime]), max([DateTime])) % 60) AS VARCHAR) +
' Minutes ' +
CAST((DATEDIFF(SECOND, min([DateTime]), max([DateTime])) % 60) AS VARCHAR) +
' Seconds '  , [Over Time] = CAST((DATEDIFF(HOUR, '17:30:00:000', MAX([DateTime])) % 24) AS VARCHAR) + ' Hours ' + 
CAST((DATEDIFF(MINUTE, '17:30:00:000', max([DateTime])) % 60) AS VARCHAR) + ' Minutes', [LATE] = 
CAST((DATEDIFF(HOUR, '08:30:00:000',Min([DATETIME])) % 24) AS VARCHAR) + ' Hours ' + CAST((DATEDIFF(MINUTE, '08:30:00:000', MIN([DateTime])) % 60) AS VARCHAR) + ' Minutes'
from tblExtract group by Employee_Number, Cast([DateTime] as Date) 

そして、これはこのクエリが示すものです:

問題は、従業員が8:30より前に早く入社し、17:30より前にも早く出て行った場合に発生しました。

どうすればこれを修正できますか?従業員が早く出発または到着した場合、LATEまたはOvertime列の値が「0時間0分」になるケースを取得するにはどうすればよいですか?

サイモン

'0 Hours 0 Minutes'人が早く到着/出発したかどうかを表示したい場合CASE、そのために使用できます

select Employee_Number, Cast([DateTime] as Date) as 'DateTime', MIN([DateTime]) as 'MIN', MAX([DateTime]) as 'MAX' , [Hours Worked] =
    CAST((DATEDIFF(HOUR ,min([DateTime]), max([DateTime])) / 24) AS VARCHAR) +
    ' Days ' +
    CAST((DATEDIFF(HOUR , min([DateTime]),  max([DateTime])) % 24) AS VARCHAR) +
    ' Hours ' +
    CAST((DATEDIFF(MINUTE, min([DateTime]), max([DateTime])) % 60) AS VARCHAR) +
    ' Minutes ' +
    CAST((DATEDIFF(SECOND, min([DateTime]), max([DateTime])) % 60) AS VARCHAR) +
    ' Seconds '  , [Over Time] = CASE WHEN DATEDIFF(MINUTE, '17:30:00:000', CONVERT(TIME, MAX([DateTime]))) < 0
    THEN '0 Hours 0 Minutes'
    ELSE
        CAST((DATEDIFF(HOUR, '17:30:00:000', MAX([DateTime])) % 24) AS VARCHAR) + ' Hours ' + 
        CAST((DATEDIFF(MINUTE, '17:30:00:000', max([DateTime])) % 60) AS VARCHAR) + ' Minutes'
    END, 
[LATE] = CASE WHEN DATEDIFF(MINUTE, '08:30:00:000', CONVERT(TIME, MIN([DateTime]))) < 0
    THEN '0 Hours 0 Minutes'
    ELSE
        CAST((DATEDIFF(HOUR, '08:30:00:000',Min([DATETIME])) % 24) AS VARCHAR) + 
        ' Hours ' + CAST((DATEDIFF(MINUTE, '08:30:00:000', MIN([DateTime])) % 60) AS VARCHAR) + ' Minutes'
    END

from Extraction
group by Employee_Number, Cast([DateTime] as Date) 

SQLFiddleデモ

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

従業員とパフォーマンスメトリックを追跡するための従来のasp / vbscriptクラス

分類Dev

店舗でアクティブな従業員のリストを取得する

分類Dev

時間の経過に伴う従業員の変化を追跡するための適切なテーブル?

分類Dev

各組織の従業員をカウントするためのスパークコードの何が問題になっていますか?

分類Dev

SQL結合:従業員によって送信されたレビューのステータスと、毎年レビューを送信していない従業員のリストを選択します

分類Dev

従業員のタイミングの最小値、最大値を計算するためのPigスクリプト

分類Dev

従業員がコストセンターを変更するときに、作業指示の日付を指定して、従業員がどのコストセンターにいたかをどのように一致させるのですか?

分類Dev

Excelシートから従業員の詳細を取得する

分類Dev

sqltimeinタイムアウトの間に従業員のファーストインを取得する方法

分類Dev

従業員のチェックインとチェックアウトの時間を取得するためのC#のLINQ

分類Dev

マネージャーの下の従業員数を取得するためのネストされたクエリ

分類Dev

従業員の詳細を取得するためのGoogleAnalytics

分類Dev

Hybris UAC:従業員を作成するためのユーザーアクセス権を持つ従業員は従業員を作成できません

分類Dev

Hybris UAC:従業員を作成するためのユーザーアクセス権を持つ従業員は従業員を作成できません

分類Dev

従業員テーブルに複数のエントリが含まれている従業員テーブルで、各従業員の2番目に高い給与を取得する方法

分類Dev

MicrosoftSQL-従業員を転送するためのストアドプロシージャ

分類Dev

Javaストリームを使用して給与に基づいて従業員の部門とIDを取得する

分類Dev

従業員データを含むIfステートメント

分類Dev

パーセンテージが特定の数値を超えるすべての従業員をリスト

分類Dev

不在の従業員をカウントするために月の「日曜日」をカウントする方法

分類Dev

従業員リストがあります。C#でLINQを使用して、給与が最小の従業員の名前を取得したいと思います。

分類Dev

会社と従業員のデータを保存するための最良の方法

分類Dev

マネージャーと従業員の詳細を見つけるための単純なSQLクエリ

分類Dev

「従業員名を入力してください」と等しくないすべての入力ボックスがファイルに保存されるという「if」ステートメントを作成するにはどうすればよいですか?

分類Dev

1つのステートメントですべてのXを遅延取得するIEnumerableを作成する方法

分類Dev

従業員とIDを選択するためのUIPickerview

分類Dev

従業員の名前と、現在の従業員よりも給与が高い次の従業員を取得する

分類Dev

SQL:その特定の時間の従業員と従業員の役職を含む売上のリスト

分類Dev

スーパーバイザー階層のリストを取得するためのSQLクエリ。従業員->スーパーバイザー->スーパーバイザー

Related 関連記事

  1. 1

    従業員とパフォーマンスメトリックを追跡するための従来のasp / vbscriptクラス

  2. 2

    店舗でアクティブな従業員のリストを取得する

  3. 3

    時間の経過に伴う従業員の変化を追跡するための適切なテーブル?

  4. 4

    各組織の従業員をカウントするためのスパークコードの何が問題になっていますか?

  5. 5

    SQL結合:従業員によって送信されたレビューのステータスと、毎年レビューを送信していない従業員のリストを選択します

  6. 6

    従業員のタイミングの最小値、最大値を計算するためのPigスクリプト

  7. 7

    従業員がコストセンターを変更するときに、作業指示の日付を指定して、従業員がどのコストセンターにいたかをどのように一致させるのですか?

  8. 8

    Excelシートから従業員の詳細を取得する

  9. 9

    sqltimeinタイムアウトの間に従業員のファーストインを取得する方法

  10. 10

    従業員のチェックインとチェックアウトの時間を取得するためのC#のLINQ

  11. 11

    マネージャーの下の従業員数を取得するためのネストされたクエリ

  12. 12

    従業員の詳細を取得するためのGoogleAnalytics

  13. 13

    Hybris UAC:従業員を作成するためのユーザーアクセス権を持つ従業員は従業員を作成できません

  14. 14

    Hybris UAC:従業員を作成するためのユーザーアクセス権を持つ従業員は従業員を作成できません

  15. 15

    従業員テーブルに複数のエントリが含まれている従業員テーブルで、各従業員の2番目に高い給与を取得する方法

  16. 16

    MicrosoftSQL-従業員を転送するためのストアドプロシージャ

  17. 17

    Javaストリームを使用して給与に基づいて従業員の部門とIDを取得する

  18. 18

    従業員データを含むIfステートメント

  19. 19

    パーセンテージが特定の数値を超えるすべての従業員をリスト

  20. 20

    不在の従業員をカウントするために月の「日曜日」をカウントする方法

  21. 21

    従業員リストがあります。C#でLINQを使用して、給与が最小の従業員の名前を取得したいと思います。

  22. 22

    会社と従業員のデータを保存するための最良の方法

  23. 23

    マネージャーと従業員の詳細を見つけるための単純なSQLクエリ

  24. 24

    「従業員名を入力してください」と等しくないすべての入力ボックスがファイルに保存されるという「if」ステートメントを作成するにはどうすればよいですか?

  25. 25

    1つのステートメントですべてのXを遅延取得するIEnumerableを作成する方法

  26. 26

    従業員とIDを選択するためのUIPickerview

  27. 27

    従業員の名前と、現在の従業員よりも給与が高い次の従業員を取得する

  28. 28

    SQL:その特定の時間の従業員と従業員の役職を含む売上のリスト

  29. 29

    スーパーバイザー階層のリストを取得するためのSQLクエリ。従業員->スーパーバイザー->スーパーバイザー

ホットタグ

アーカイブ