我有一個包含一組任務的一個表來執行:在一個表中選擇的行,添加的列,其中在其它相關表中的行的MAX(日期)
Task
ID Name
1 Washing Up
2 Hoovering
3 Dusting
用戶可以添加一個或多個注到註釋表。每個音符與任務相關聯:
Note
ID ID_Task Completed(%) Date
11 1 25 05/07/2013 14:00
12 1 50 05/07/2013 14:30
13 1 75 05/07/2013 15:00
14 3 20 05/07/2013 16:00
15 3 60 05/07/2013 17:30
我想要一個查詢,將選擇任務ID,名稱和它的%完成,這應該是零,如果有沒有它的任何說明。查詢應返回:
ID Name Completed (%)
1 Washing Up 75
2 Hoovering 0
3 Dusting 60
,我真的一直在努力與查詢對於這一點,我已經閱讀是一種問題「每組最大的N」,其中有關於SO,沒有很多的例子其中我可以適用於我的案件(或至少完全理解)。我的直覺是由音符表找到MAX(日)爲每個任務開始:
SELECT ID_Task,
MAX(Date) AS Date
FROM
Note
GROUP BY
ID_Task
煩人,我不能只是添加「完成%」以上的查詢,除非它包含在GROUP子句。哎呀!我不知道如何跳過這個箍環,以便以某種方式獲得任務錶行,其中添加了列。這是我可悲的嘗試,因爲它只返回任務和筆記,然後複製任務記錄(每個筆記一個,所以這是一個完全失敗),因此失敗。
SELECT Task.ID,
Task.Name,
Note.Complete
FROM
Task
JOIN
(SELECT ID_Task,
MAX(Date) AS Date
FROM
Note
GROUP BY
ID_Task) AS InnerNote
ON
Task.ID = InnerNote.ID_Task
JOIN
Note
ON
Task.ID = Note.ID_Task
任何人都可以幫助我嗎?那麼你想要一個與最後日期
select t.ID, t.Name, coalesce(max(n.complete), 0)
from tasks t left outer join
notes n
on t.id = n.id_task
group by t.id, t.name
如果任務可以成爲「不完整」:
是的,任務會變得 「不完整」,如這個應用程序是用於項目管理:)。 – Robinson
這實際上很狡猾。利用row_number。 – Robinson
確定這個工程。謝謝。這太妙了。今天學到了一個新的竅門。 – Robinson