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

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

Links booklink

Contact Us: admin [ a t ] ucptt.com