我有一個MS SqlServer的2008數據庫有兩個表,worktodo和workdone:與最早的子記錄加入
CREATE TABLE worktodo
(
workorder VARCHAR(32),
worker VARCHAR(64),
duedate DATETIME,
PRIMARY KEY workorder
);
CREATE TABLE workdone
(
workorder VARCHAR(32),
donedate DATETIME
);
而且我正在尋找一個查詢,將返回,每個工人,總數worktodos,以及遲到的worktodos的總數,其中遲到定義爲donedate> duedate,或duedate> NOW,並且沒有任何記錄。
在代碼中做的不重要,但我需要一個可以由一個相當簡單的報告工具運行的查詢。
任何想法?
編輯:新增樣本數據:
worktodo:
workorder worker duedate
10001 JOE 2012-01-01
10002 JOE 2012-01-02
10003 FRED 2012-01-03
10004 BILL 2013-12-31
workdone:
worker donedate
10001 2011-01-01
10002 2011-12-30
10002 2012-01-04
Desired:
worker num_total_workorders num_late_workorders
BILL 1 0
FRED 1 1
JOE 2 1
比爾有一個worktodo,它沒有孩子workdones。但是因爲行將在未來,所以他有一份工作單,而且沒有遲到的工作單。
弗雷德有一個worktodo,沒有孩子工作。但是因爲過去是這樣的,所以他有一份工作單和一份晚的工作單。
喬有兩個worktodos。 Workorder 10001有一個2012-01-01的截止日期,但直到2012-01-31才完成,所以已經晚了。 Workorder 10002有一個2012-01-02的管理者,但最早的工作是在2011年12月30日之前完成的,所以它不會遲到。還有另外一個對於10002而言晚於duedate的捐贈者沒有意義。這導致Joe有兩個工作單位,一個晚工單。
(另外 - 假設workorder是主鍵,在worktodo上)。
可用的樣品數據和理想的結果? –
是否donedate是一個可空列的工作? – Tim