0

我有两个不同的表:

  1. checkin_out由两个字段组成:emp_codechecked_date
  2. temp_days由两个字段组成:iddate_value

checkin_out有以下数据:

emp_code | checked_date
-----------------------
001        2012-11-01
001        2012-11-02
001        2012-11-03
002        2012-11-01
003        2012-11-01
003        2012-11-02

虽然表temp_days具有以下数据:

id  | date_value
-----------------
1     2012-11-01
2     2012-11-02
3     2012-11-03
4     2012-11-04
5     2012-11-05

从上面的表格中,我需要在表格temp_days中显示缺失的日期;我需要查询以获得如下结果:

emp_code  |  date_value
-----------------------
001          2012-11-04
001          2012-11-05
002          2012-11-02
002          2012-11-03
002          2012-11-04
002          2012-11-05
003          2012-11-03
003          2012-11-04
003          2012-11-05

如果有人可以帮忙,请!谢谢!

4

2 回答 2

1

以下适用于具有多个 emp_code 的更复杂的数据集。

SELECT  alldays.emp_code, alldays.date_value
FROM    (
          SELECT date_value, emp_code
          FROM temp_days
          CROSS JOIN checkin_out
          GROUP BY date_value, emp_code
        ) alldays
        LEFT JOIN checkin_out C
            ON alldays.date_value = C.checked_date
            AND alldays.emp_code = C.emp_code
WHERE   C.emp_code IS NULL
于 2012-11-30T13:39:04.803 回答
0
SELECT  c.emp_code, a.date_value
FROM    temp_days a
        LEFT JOIN checkin_out b
            ON a.date_value = b.checked_date
        CROSS JOIN 
        (
            SELECT emp_code
            FROM checkin_out
            GROUP BY emp_code
        ) c
WHERE   b.emp_code IS NULL
于 2012-11-30T13:12:47.303 回答