看板 Database 關於我們 聯絡資訊
※ 引述《ctr1 (【積π】)》之銘言: : ------------------------------- : ID QTY GOOD BAD TEST : ------------------------------- : A 1000 800 200 F : A 200 90 110 R : A 110 80 30 R : B 500 450 50 F : B 50 30 20 R : 想請教板上各位前輩, : 若是我最終想呈現的結果為 : ID FIRST_YIELD FINAL_YIELD : ---------------------------- : A 0.8 0.97 : B 0.9 0.96 : 0.8 = 800/1000 0.97 = (800+90+80)/1000 : 0.9 = 450/500 0.96 = (450+30)/500 : 我目前想到的做法是 : 先分別計算 : FIRST_YIELD、LAST_YIELD : 再透過JOIN的方式將資料組合起來 : 呈現最終結果, : 是否有更好的撰寫方式 : 謝謝指導~ CREATE TABLE #Temp (ID nvarchar(50), Qty float, Good float, BAD float, TEST varchar(50)); GO INSERT INTO #Temp VALUES ('A', 1000, 800, 200, 'F') , ('A', 200, 90, 110, 'R') , ('A', 110, 80, 30, 'R') , ('B', 500, 450, 50, 'F') , ('B', 50, 30, 20, 'R') Select ID , max(case when TEST='F' then Good/Qty else 0 end) as FIRST_YIELD , 1-min(BAD)/max(Qty) as FINAL_YIELD from #Temp Group by ID ------------------------------- ID FIRST_YIELD FINAL_YIELD A 0.8 0.97 B 0.9 0.96 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.226.137 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1641931618.A.2C3.html
ctr1: 謝謝大大,我會從這角度去研究 01/12 08:26
tsongs: 建議用sum(Good)/max(qty) 因為實務上可能會分批 02/25 15:37