pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

根據前一行內的計算值創建計算值

Create calculated value based on calculated value inside previous row(根據前一行內的計算值創建計算值)
本文介紹了根據前一行內的計算值創建計算值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在嘗試找到一種方法,將每月百分比變化應用于預測定價.我在 excel 中設置了我的問題,使其更清楚一些.我使用的是 SQL Server 2017.

I'm trying to find a way to apply monthly percentage changes to forecast pricing. I set my problem up in excel to make it a bit more clear. I'm using SQL Server 2017.

我們會說 18 年 9 月 1 日之前的所有月份都是歷史月份,而 2018 年 9 月 1 日及以后的月份都是預測月份.我需要使用...計算預測價格(樣本數據上的黃色陰影)

We'll say all months before 9/1/18 are historical and 9/1/18 and beyond are forecasts. I need to calculate the forecast price (shaded in yellow on the sample data) using...

Forecast Price = (Previous Row Forecast Price * Pct Change) + Previous Row Forecast Price

需要說明的是,我的數據中尚不存在黃色陰影價格.這就是我試圖讓我的查詢計算.由于這是每月百分比變化,每一行都依賴于前一行并且超出了單個 ROW_NUMBER/PARTITION 解決方案,因為我們必須使用之前計算出的價格.顯然,excel 中的簡單順序計算在這里有點困難.知道如何在 SQL 中創建預測價格列嗎?

Just to be clear, the yellow shaded prices do not exist in my data yet. That is what I am trying to have my query calculate. Since this is monthly percentage change, each row depends on the row before and goes beyond a single ROW_NUMBER/PARTITION solution because we have to use the previous calculated price. Clearly what is an easy sequential calculation in excel is a bit more difficult here. Any idea how to create forecasted price column in SQL?

推薦答案

您需要使用遞歸 CTE.這是查看前一行計算值的一種更簡單的方法:

You need to use a recursive CTE. That is one of the easier ways to look at the value of a calculated value from previous row:

DECLARE @t TABLE(Date DATE, ID VARCHAR(10), Price DECIMAL(10, 2), PctChange DECIMAL(10, 2));
INSERT INTO @t VALUES
('2018-01-01', 'ABC', 100,    NULL),
('2018-01-02', 'ABC', 150,   50.00),
('2018-01-03', 'ABC', 130,  -13.33),
('2018-01-04', 'ABC', 120,  -07.69),
('2018-01-05', 'ABC', 110,  -08.33),
('2018-01-06', 'ABC', 120,    9.09),
('2018-01-07', 'ABC', 120,    0.00),
('2018-01-08', 'ABC', 100,  -16.67),
('2018-01-09', 'ABC', NULL, -07.21),
('2018-01-10', 'ABC', NULL,   1.31),
('2018-01-11', 'ABC', NULL,   6.38),
('2018-01-12', 'ABC', NULL, -30.00),
('2019-01-01', 'ABC', NULL,  14.29),
('2019-01-02', 'ABC', NULL,   5.27);

WITH ncte AS (
    -- number the rows sequentially without gaps
    SELECT *, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Date) AS rn
    FROM @t
), rcte AS (
    -- find first row in each group
    SELECT *, Price AS ForecastedPrice
    FROM ncte AS base
    WHERE rn = 1
    UNION ALL
    -- find next row for each group from prev rows
    SELECT curr.*, CAST(prev.ForecastedPrice * (1 + curr.PctChange / 100) AS DECIMAL(10, 2))
    FROM ncte AS curr
    INNER JOIN rcte AS prev ON curr.ID = prev.ID AND curr.rn = prev.rn + 1
)
SELECT *
FROM rcte
ORDER BY ID, rn

結果:

| Date       | ID  |  Price | PctChange | rn | ForecastedPrice |
|------------|-----|--------|-----------|----|-----------------|
| 2018-01-01 | ABC | 100.00 |      NULL |  1 |          100.00 |
| 2018-01-02 | ABC | 150.00 |     50.00 |  2 |          150.00 |
| 2018-01-03 | ABC | 130.00 |    -13.33 |  3 |          130.01 |
| 2018-01-04 | ABC | 120.00 |     -7.69 |  4 |          120.01 |
| 2018-01-05 | ABC | 110.00 |     -8.33 |  5 |          110.01 |
| 2018-01-06 | ABC | 120.00 |      9.09 |  6 |          120.01 |
| 2018-01-07 | ABC | 120.00 |      0.00 |  7 |          120.01 |
| 2018-01-08 | ABC | 100.00 |    -16.67 |  8 |          100.00 |
| 2018-01-09 | ABC |   NULL |     -7.21 |  9 |           92.79 |
| 2018-01-10 | ABC |   NULL |      1.31 | 10 |           94.01 |
| 2018-01-11 | ABC |   NULL |      6.38 | 11 |          100.01 |
| 2018-01-12 | ABC |   NULL |    -30.00 | 12 |           70.01 |
| 2019-01-01 | ABC |   NULL |     14.29 | 13 |           80.01 |
| 2019-01-02 | ABC |   NULL |      5.27 | 14 |           84.23 |

DB Fiddle 演示

這篇關于根據前一行內的計算值創建計算值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個子標記轉換為具有多個分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個表創建視圖?)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對?) - IT屋-程序員軟件開發技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉換為日期/月份編號(問題和答案的組合))
Join instead of correlated subquery(加入而不是相關子查詢)
主站蜘蛛池模板: 定量包装秤,吨袋包装称,伸缩溜管,全自动包装秤,码垛机器人,无锡市邦尧机械工程有限公司 | 滑板场地施工_极限运动场地设计_滑板公园建造_盐城天人极限运动场地建设有限公司 | 【化妆品备案】进口化妆品备案流程-深圳美尚美化妆品有限公司 | 破碎机_上海破碎机_破碎机设备_破碎机厂家-上海山卓重工机械有限公司 | 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | 首页-恒温恒湿试验箱_恒温恒湿箱_高低温试验箱_高低温交变湿热试验箱_苏州正合 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 定量包装秤,吨袋包装称,伸缩溜管,全自动包装秤,码垛机器人,无锡市邦尧机械工程有限公司 | 橡胶电子拉力机-塑料-微电脑电子拉力试验机厂家-江苏天源 | 振动台-振动试验台-振动冲击台-广东剑乔试验设备有限公司 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 铝箔袋,铝箔袋厂家,东莞铝箔袋,防静电铝箔袋,防静电屏蔽袋,防静电真空袋,真空袋-东莞铭晋让您的产品与众不同 | X光检测仪_食品金属异物检测机_X射线检测设备_微现检测 | 阿里巴巴诚信通温州、台州、宁波、嘉兴授权渠道商-浙江联欣科技提供阿里会员办理 | 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | 走心机厂家,数控走心机-台州博城智能科技有限公司 | 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 引领中高档酒店加盟_含舍·美素酒店品牌官网 | 烟台条码打印机_烟台条码扫描器_烟台碳带_烟台数据采集终端_烟台斑马打印机-金鹏电子-金鹏电子 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 【星耀裂变】_企微SCRM_任务宝_视频号分销裂变_企业微信裂变增长_私域流量_裂变营销 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 中国品牌门窗网_中国十大门窗品牌_著名门窗品牌 | MES系统-WMS系统-MES定制开发-制造执行MES解决方案-罗浮云计算 | 上海软件开发-上海软件公司-软件外包-企业软件定制开发公司-咏熠科技 | 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 薄壁轴承-等截面薄壁轴承生产厂家-洛阳薄壁精密轴承有限公司 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 包装机_厂家_价格-山东包装机有限公司 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 郑州大巴车出租|中巴车租赁|旅游大巴租车|包车|郑州旅游大巴车租赁有限公司 | 蜜蜂职场文库_职场求职面试实用的范文资料大全 | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 |