這將計算使用所有任務百分比的里程碑的百分比。
UPDATE [milestones]
SET [percentage] = (SELECT AVG(pecentage) FROM [tasks] WHERE [tasks].[id_milestone] = [milestones].[id])
如果你想設置例如就像一個狀態標誌[完成]你可以做這樣的事情:
UPDATE [milestones]
SET [completed] = (CASE WHEN (SELECT AVG(pecentage) FROM [tasks] WHERE [tasks].[id_milestone] = [milestones].[id]) = 100 THEN 1 ELSE 0 END)
這僅僅是一個猜測你想要什麼,你沒comppletely告訴我們你的表,結構等 希望它能幫助。
編輯
你的表Milestone
需要一列percentage
還是你想寫的結果在其他表Milestone_complete?我不明白你爲什麼有這些額外的表格。 所以我們猜你在Milestone
表中有一列percentage
。在這種情況下,SQL是這樣的:
UPDATE [Milestone]
SET [percentage] = (SELECT AVG(pecentage)
FROM [Tasks]
WHERE [Tasks].[ID_milestone] = [Milestone].[ID_milestone])
如果你想寫的結果在Completed' column in the
Milestone_complete`表,然後像這樣做:
UPDATE [Milestone_complete]
SET [percentage] = (SELECT AVG(pecentage)
FROM [Tasks]
WHERE [Tasks].[ID_milestone] = [Milestone].[ID_milestone])
FROM [Milestone_complete]
JOIN [Milestone] ON [Milestone].[ID_milestone] = [Milestone_Complete].[ID_milestone]
或者你只需要插入如果里程碑的所有任務均爲100%,則結果爲Milestone_Complete
? 我不知道你是否已經在強制表中有記錄或需要添加以防萬一。 我假設你有一個,並想完成設置爲例如1(0 =未完成)。
UPDATE [Milestone_complete]
SET [completed] = 1
FROM [Milestone_complete]
JOIN [Milestone] ON [Milestone].[ID_milestone] = [Milestone_Complete].[ID_milestone]
WHERE (SELECT AVG(percentage)
FROM [Tasks]
WHERE [Tasks].[ID_milestone] = [Milestone].[ID_milestone])=100
我沒有測試它的任何東西,所以不知道它的工作原理,但我沒有100%你的方法,你需要修改你自己的需要。希望能幫助到你。下一次你問一個問題集中在一個清晰,完整和可以理解的問題上時,讓它更容易。
你怎麼知道任務完成?你有更多的專欄嗎?請在你的問題上添加它。 – 2013-05-04 14:57:59