Re: [SQL ] 當月數量不足,往前抓一個月。

看板Database (資料庫)作者 (可愛小孩子)時間5年前 (2019/07/22 15:01), 5年前編輯推噓1(101)
留言2則, 1人參與, 5年前最新討論串3/3 (看更多)
-- 測試資料 select * into #sample from ( values ('物料1','鐵',25,convert(date,'2018/3/1')), ('物料1','鐵',0.1,'2018/3/1'), ('物料1','鐵',0.56,'2018/4/11'), ('物料1','鐵',10,'2018/5/12'), ('物料1','鐵',10,'2018/6/25'), ('物料1','鐵',10,'2018/6/30'), ('物料1','鐵',10,'2018/7/30') ) t(partNO,PARAMETER_NAME,Numerical,DATE) -- 當月標準差 ;with tb1 as ( select partNO,PARAMETER_NAME, ym = convert(char(6),DATE,112), stdev = stdev(Numerical), -- 取得前次月份(lag 用法:https://bit.ly/2Oarh5g ) prev_ym = lag(convert(char(6),DATE,112)) over (partition by partNO,PARAMETER_NAME order by convert(char(6),DATE,112)) from #sample group by partNO,PARAMETER_NAME,convert(char(6),DATE,112) ) -- 最終結果 select t1.partNO,t1.PARAMETER_NAME,t1.ym, stdev = isnull(t1.stdev,stdev(t2.Numerical)) from tb1 t1 left join #sample t2 on t1.partNO = t2.partNO and t1.PARAMETER_NAME = t2.PARAMETER_NAME and t1.stdev is null and convert(char(6),t2.DATE,112) in (t1.ym,t1.prev_ym) and datediff(month,t2.DATE,t1.ym + '01') <= 6 group by t1.partNO,t1.PARAMETER_NAME,t1.ym,t1.stdev /* 說明: 紅色: 原本該月標準差 黃色: 與前次月份合併 藍色: 與前次月份差距不超過半年 */ ※ 引述《carsun00 (永夜)》之銘言: : 資料庫名稱:MS SQL : 資料庫版本:14.0.2014.14 : 內容/問題描述: : 資料需求是本月的數據算不出結果(標準差), : 自動加前一個月的數據,如果都沒有繼續往前追朔最多半年, : SQL語法如下,目前只能計算出每個月的資料, : 想到的解法是資料表內, : 開一個欄位儲存查詢的次數(1~6), : 在使用While跑查詢。 : 但這樣會變成會可能須要查詢六次, : 不知道有沒有比較好的處理方式。 : SELECT : [PartNo] : , [PARAMETER_NAME] : , STDEV([Numerical]) : , CONVERT(CHAR(7), [DATE], 120) AS '月分組' : FROM : [dbo].[SAMPLES_Numerical] : GROUP BY : [PartNo] : , [PARAMETER_NAME] : , CONVERT(CHAR(7), [DATE], 120); : 謝謝協助m(_ _)m。 : OS:覺得功力薄弱... : 有點想去上MSSA的70-761.. : 原始資料 : partNO PARAMETER_NAME Numerical DATE : 物料1 鐵 25 2018/3/1 : 物料1 鐵 0.1 2018/3/1 : 物料1 鐵 0.56 2018/4/11 : 物料1 鐵 10 2018/5/12 : 物料1 鐵 10 2018/6/25 : 物料1 鐵 10 2018/7/30 : 目前sql查詢結果(錯誤) : 物料1 鐵 0.001685269 3月 : 物料1 鐵 null 4月 : 物料1 鐵 null 5月 : 物料1 鐵 0.001604836 6月 : 期望結果 : 物料1 鐵 0.001685269 3月 : 物料1 鐵 0.001685269 4月 3月&4月計算結果 : 物料1 鐵 0.001685269 5月 4月%5月計算結果 : 物料1 鐵 0.001604836 6月 6月 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.118.82.76 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1563778875.A.2F0.html ※ 編輯: cutekid (122.118.82.76 臺灣), 07/22/2019 15:06:20

07/23 09:20, 5年前 , 1F
謝謝 學到新用法了
07/23 09:20, 1F

07/23 09:20, 5年前 , 2F
差點就開表慢慢算了 orz...
07/23 09:20, 2F
文章代碼(AID): #1TDLyxBm (Database)
文章代碼(AID): #1TDLyxBm (Database)