SQL文

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

あなたはとても助かりました –

0

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 
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

あなたがとても役に立った –