2016-08-01 3 views
-1

내가 문SQL 문

select 
    ID, name,Departmen, date, clock_in, clock_out, 
    DATEDIFF(MINUTE, on_duty, clock_in) as late, 
    DATEDIFF(MINUTE, off_duty, clock_out) as Early, 
    DATEDIFF(MINUTE, on_duty, clock_in) - DATEDIFF(MINUTE, off_duty, clock_out) as total_telat when late <=30 from kkpsurabaya 

내가 total_telat을 원하는 만 1-30min

+2

당신이 무슨 뜻인지 아니 생각. 더 구체적으로하십시오 –

+0

좀 더 구체적으로 해보고 싶습니다. 나는 총 telat가 늦은 경우에만 계산합니다. 1-30 분 –

+0

죄송합니다. 도움을 주려고했지만 귀하의 게시물과 내 (삭제 된) 답변에 대한 귀하의 의견으로 명확하게 문제를 설명하지 못했습니다. 나는 당신이 무엇을 성취하려고하는지 전혀 모른다. –

답변

1

사용 CASE . . WHEN . . END

select ID, 
    name, 
    Departmen, date, clock_in, clock_out, 
    DATEDIFF(MINUTE, on_duty, clock_in) as late , 
    DATEDIFF(MINUTE, off_duty, clock_out) as Early, 
    CASE 
    WHEN DATEDIFF(MINUTE, on_duty, clock_in) < 30 
    THEN DATEDIFF(MINUTE,on_duty, clock_in) - DATEDIFF(MINUTE ,off_duty, clock_out) 
    END as total_telat 
from kkpsurabaya 
+0

thx man so so helpfull –

0

케이스 문을 계산 할 때 또는 경우에 선택하려는 경우와 선택에 가장 가까운을 밖으로 모든 버전을 지원합니다. 이것은 귀하의 이해를위한 예일뿐입니다. 사건에 대한 연구가 당신이 필요한 것을 성취하는 데 도움이되기를 바랍니다.

SELECT CAST(
      CASE 
        WHEN (DATEDIFF(MINUTE,on_duty, clock_in) - DATEDIFF(MINUTE ,off_duty, clock_out))> '0' or (DATEDIFF(MINUTE,on_duty, clock_in) - DATEDIFF(MINUTE ,off_duty, clock_out)) < '31' 
        THEN 1 
        ELSE 0 
      END AS bit) as Saleable, * 
FROM Product 
0
SELECT ID 
     ,NAME 
     ,Departmen 
     ,DATE 
     ,clock_in 
     ,clock_out 
     ,DATEDIFF(MINUTE, on_duty, clock_in) AS late 
     ,DATEDIFF(MINUTE, off_duty, clock_out) AS Early 
     ,total_telat = iif(DATEDIFF(MINUTE, on_duty, clock_in)<= 30, DATEDIFF(MINUTE, on_duty, clock_in) - DATEDIFF(MINUTE, off_duty, clock_out), NULL) 
    FROM kkpsurabaya 
+0

그 사람은 매우 도움이된다. –