看板 Database 關於我們 聯絡資訊
樣本有點問題, 直接拿查詢結果作 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
carsun00: 謝謝協助。 07/17 09:10
carsun00: 只是這樣的標準差,好像會有誤差? 07/17 09:11
carsun00: 情況是當月數據只有一筆,會取道null, 07/17 09:12
carsun00: 前月有3筆資料的話,要當月加上前月共四筆來計算。 07/17 09:13
carsun00: 第一層提供的查詢結果就有誤差了QQ 07/17 09:23
konkonchou: 那要提供正確的資料源,不然你連T-SQL語法都是有問題的 07/17 11:18
konkonchou: 所以先模擬你算出來的資料兜你可能要的結果 07/17 11:19
konkonchou: 當月或前月有值, 內文有提到改subquery判斷式就可以了 07/17 11:20
carsun00: 原始資料是我的資料來源, 07/17 16:48
carsun00: 但我的SQL沒辦法正確地去找出期望結果 07/17 16:49
carsun00: 主要是卡在這段QQ... 07/17 16:49