看板 Database 關於我們 聯絡資訊
-- 你的工作資料表 create table #job( task char(1), -- 工作項目 pre1 char(1), -- 前置工作項目1 pre2 char(1), -- 前置工作項目2 jobDay integer -- 工作天數 ) -- 答案暫存 table create table #temp( task char(1), -- 工作項目 start integer, -- 第幾天開始 finish integer -- 第幾天結束 ) -- 預處理 insert into #temp (task) select task from #job -- 跑迴圈 propagate while 1 = 1 begin update t1 set start = t2.finish , finish = t2.finish + t2.jobDay from #temp t1 inner join ( select t1.task, t1.jobDay, case when isnull(t2.finish,0) > isnull(t3.finish,0) then isnull(t2.finish,0) else isnull(t3.finish,0) end finish from #job t1 left join #temp t2 on t1.pre1 = t2.task left join #temp t3 on t1.pre2 = t3.task where not ((pre1 is not null and t2.finish is null) or (pre2 is not null and t3.finish is null)) ) t2 on t1.task = t2.task where t1.finish is null if @@ROWCOUNT = 0 break end -- 顯示答案 select * from #temp ※ 引述《chermany (qq)》之銘言: : 資料庫名稱:SQL server : 資料庫版本:2012 : 內容/問題描述: : 請問我有個資料表如下: : 工作項目 前置工作項目1 前置工作項目2 工作天數 : ================================================================ : A 1 : B A 3 : C A B 5 : D A 2 : 我想得到: : 工作項目 第幾天開始 第幾天結束 : ================================================================ : A 0 1 : B 1 4 : C 4 9 : E 1 3 : 每個工作項目都需要前置工作1、2項目全部結束後才能開始,前置工作項 : 目的結束天數=銜接的工作項目的開始天數,這樣結果是否能使用sql語法表示? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.221.80.36 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1436767678.A.DEF.html