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

看板Database (資料庫)作者 (易而普科技)時間5年前 (2019/07/16 19:27), 編輯推噓2(209)
留言11則, 2人參與, 5年前最新討論串2/3 (看更多)
樣本有點問題, 直接拿查詢結果作 subquery CREATE TABLE #Temp (partNO nvarchar(50), PARAMETER_NAME nvarchar(50), Numerical float, [Date] datetime); GO INSERT INTO #Temp VALUES ('物料1', '鐵', 0.001685269, '2018/3/1') , ('物料1', '鐵', null, '2018/4/1') , ('物料1', '鐵', null , '2018/5/1') , ('物料1', '鐵', 0.001604836, '2018/6/1') Select partNO, PARAMETER_NAME , case when Numerical is null then (Select top 1 Numerical from #Temp T2 where DateDiff(d, T2.Date, T1.Date)>0 and T2.Numerical is not null order by date desc) else Numerical end as [Numerical] , [Date] from #Temp T1 結果會像這樣 partNO PARAMETER_NAME Numerical Date 物料1 鐵 0.001685269 2018-03-01 00:00:00.000 物料1 鐵 0.001685269 2018-04-01 00:00:00.000 物料1 鐵 0.001685269 2018-05-01 00:00:00.000 物料1 鐵 0.001604836 2018-06-01 00:00:00.000 若確定期間一定有值的話, 改 subquery 判斷式就可以了 ※ 引述《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] : , [Numerical] : , 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月 -- https://www.erptech.com.tw -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.35.129 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1563276444.A.CE6.html

07/17 09:10, 5年前 , 1F
謝謝協助。
07/17 09:10, 1F

07/17 09:11, 5年前 , 2F
只是這樣的標準差,好像會有誤差?
07/17 09:11, 2F

07/17 09:12, 5年前 , 3F
情況是當月數據只有一筆,會取道null,
07/17 09:12, 3F

07/17 09:13, 5年前 , 4F
前月有3筆資料的話,要當月加上前月共四筆來計算。
07/17 09:13, 4F

07/17 09:23, 5年前 , 5F
第一層提供的查詢結果就有誤差了QQ
07/17 09:23, 5F

07/17 11:18, 5年前 , 6F
那要提供正確的資料源,不然你連T-SQL語法都是有問題的
07/17 11:18, 6F

07/17 11:19, 5年前 , 7F
所以先模擬你算出來的資料兜你可能要的結果
07/17 11:19, 7F

07/17 11:20, 5年前 , 8F
當月或前月有值, 內文有提到改subquery判斷式就可以了
07/17 11:20, 8F

07/17 16:48, 5年前 , 9F
原始資料是我的資料來源,
07/17 16:48, 9F

07/17 16:49, 5年前 , 10F
但我的SQL沒辦法正確地去找出期望結果
07/17 16:49, 10F

07/17 16:49, 5年前 , 11F
主要是卡在這段QQ...
07/17 16:49, 11F
文章代碼(AID): #1TBRISpc (Database)
文章代碼(AID): #1TBRISpc (Database)