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