SQL与if语句

问题描述:

我想用的时候或者if语句SQL与if语句

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-30min –

+0

对不起,试图帮助,但你的文章和你对我的(删除)答案的评论没有清楚地勾勒出你的问题。我不知道你想要完成什么。 –

使用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那么这么有帮助的人 –

Case语句选择选择最接近如果通过了所有版本的支持。这只是你理解的一个例子。我希望学习案例能帮助你达到你所需要的。

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 

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

thx那么有帮助的人 –