Select 2 table 中的所有 table 具有空值

Select all table in 2 table with null value

我在 SQL 服务器 2005 中有 2 个 Table:

首先table:

Tanggal
2015/01/01
2015/01/02
2015/01/03
2015/01/04
2015/01/05
2015/01/06

第二个Table:

Tanggal               Jam_Masuk          Jam_Pulang.    Id_user
2015/01/01        08:00:00                17:00:00         00600320 
2015/01/03        08:00:00                17:00:00         00600320 
2015/01/05        08:00:00                17:00:00         00600320 
2015/01/06        08:00:00                17:00:00         00600320 

我想要 select 这样的 :

Tanggal               Jam_Masuk          Jam_Pulang           Total              Status      Id_user
2015/01/01        08:00:00                17:00:00               09:00:00        OK          00600320   
2015/01/02        --:--:--                --:--:--               --:--:--        ALPHA/IZIN  00600320 
2015/01/03        08:00:00                17:00:00               09:00:00        OK          00600320   
2015/01/04        --:--:--                --:-- :--              --:--:--        ALPHA/IZIN  00600320 
2015/01/05        08:00:00                17:00:00               09:00:00        OK          00600320   
2015/01/06        08:00:00                17:00:00               09:00:00        OK          00600320          

注意:字段总计 (hh:mm:ss)= Jam_Pulang - Jam_Masuk

先致谢

LEFT JOIN两张表,Status使用CASE语句,合计使用DATEDIFF函数。还使用 CONVERT 日期戳 Tanggal 和样式 111 作为您预期的 YYYY/MM/DD.

输出
SELECT CONVERT(VARCHAR(50),a.Tanggal,111) AS Tanggal, 
b.Jam_Masuk, 
b.Jam_Pulang, 
DATEDIFF(hour, Jam_Masuk, Jam_Pulang) AS Total,
b.Id_user, 
CASE WHEN b.Id_user IS NOT NULL THEN 'OK' ELSE NULL END AS Status
FROM tab1 a
LEFT JOIN tab12 b ON a.Tanggal = b.Tanggal

输出

Tanggal     Jam_Masuk   Jam_Pulang  Total   Id_user Status
2015/01/01  08:00:00    17:00:00    9       600320  OK
2015/01/02  (null)      (null)      (null)  (null)  (null)
2015/01/03  08:00:00    17:00:00    9       600320  OK
2015/01/04  (null)      (null)      (null)  (null)  (null)
2015/01/05  08:00:00    17:00:00    9       600320  OK
2015/01/06  08:00:00    17:00:00    9       600320  OK