作者konkonchou (易而普科技)
看板Database
標題Re: [SQL ] 當月數量不足,往前抓一個月。
時間Tue Jul 16 19:27:18 2019
樣本有點問題, 直接拿查詢結果作 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