Sqlserver
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल सर्वर में नियमित अभिव्यक्ति का उपयोग कैसे करें?

  2. INNER JOIN करते समय डुप्लीकेट परिणाम

  3. Mssql में अद्वितीय कुंजी बाधा पर डुप्लिकेट शून्य मान उल्लंघन

  4. SQL सर्वर में एक विदेशी कुंजी बाधा को कैसे अक्षम करें (T-SQL उदाहरण)

  5. SQL सर्वर में तालिका-मूल्यवान फ़ंक्शन के माध्यम से डेटा सम्मिलित करें