sql >> データベース >  >> RDS >> Sqlserver

残業を計算するための新しい列

    代わりにこれを試してください:

    with times as (
    SELECT    t1.EmplID
            , t3.EmplName
            , min(t1.RecTime) AS InTime
            , max(t2.RecTime) AS [TimeOut]
            , cast(min(t1.RecTime) as datetime) AS InTimeSub
            , cast(max(t2.RecTime) as datetime) AS TimeOutSub
            , t1.RecDate AS [DateVisited]
    FROM  AtdRecord t1 
    INNER JOIN 
          AtdRecord t2 
    ON    t1.EmplID = t2.EmplID 
    AND   t1.RecDate = t2.RecDate
    AND   t1.RecTime < t2.RecTime
    inner join 
          HrEmployee t3 
    ON    t3.EmplID = t1.EmplID 
    group by 
              t1.EmplID
            , t3.EmplName
            , t1.RecDate
    )
    SELECT EmplID
    ,EmplName
    ,InTime
    ,[TimeOut]
    ,[DateVisited]
    ,convert(char(5),cast([TimeOutSub] - InTimeSub as time), 108) totaltime
    ,convert(char(5), case when TimeOutSub - InTimeSub >= '08:01' then 
    cast(TimeOutSub - dateadd(hour, 8, InTimeSub) as time) else '00:00' end, 108) as overtime
    FROM times
    


    1. sun.security.validator.ValidatorException:Java> 1.6で、PKIXパスの構築に失敗しました

    2. SQL のクエリでグループ化された非集計列を表示する

    3. テーブル内の2つの主キーが許可されないのはなぜですか?

    4. 記載された値を持つMySQLでIN句を使用する