/****** Script for SelectTopNRows command from SSMS  ******/
SELECT [fdSequenceID]
,[fdInnerTime]
,[fdTime]
,[fdData]
,[fdState]
,[fdUpdateTime]
,[fdCreateTime]
FROM [NewDBTest].[dbo].[tbDataMonthHG] WITH f AS
(
SELECT ROW_NUMBER()OVER( partition by fdSequenceID ORDER BY fdTime) AS id, * FROM [NewDBTest].[dbo].[tbDataMonthHG]
) select t.*,
fdRate=(cast(cast(100*((t.fdData/NULLif(d.fdData,0))-1) as numeric(25,10)) as varchar(50))+'%' ) --小数变百分数
from f t
left join f d on
t.fdInnerTime = DateAdd(year,1,d.fdInnerTime) and t.fdSequenceID = d.fdSequenceID --同比增长
order by fdSequenceID,id asc

环比增长:

WITH f AS
(
SELECT ROW_NUMBER()OVER( partition by fdSequenceID ORDER BY fdTime) AS id, * FROM [NewDBTest].[dbo].[tbDataMonthHG] where fdSequenceID <100
) select t.*,
fdRate=(cast(cast(100*((t.fdData/NULLif(d.fdData,0))-1) as numeric(25,10)) as varchar(50))+'%' ) --将分数变为百分数
from f t left join f d on
t.fdInnerTime = DateAdd(month,1,d.fdInnerTime) and t.fdSequenceID = d.fdSequenceID --获取根据时间获取上月时间
order by fdSequenceID,id asc

某一时间点与相邻的上一个时间的增长

WITH f AS
(
SELECT ROW_NUMBER()OVER( partition by fdSequenceID ORDER BY fdTime) AS id, * FROM [NewDBTest].[dbo].[tbData]
)
SELECT
t.fdSequenceID,t.fdInnerTime,t.fdTime,t.fdData,t.fdState,t.fdUpdateTime,t.fdCreateTime,t.id,
(select cast(cast(100*((t.fdData/NULLif(d.fdData,0))-1) as numeric(35,10)) as varchar(50))+'%') AS fdRate
from f t
LEFT JOIN f d on t.id=d.id+1 where t.fdSequenceID = d.fdSequenceID ORDER by t.fdSequenceID ASC -- 不会返回null WITH f AS
(
SELECT ROW_NUMBER()OVER( partition by fdSequenceID ORDER BY fdTime) AS id, * FROM [NewDBTest].[dbo].[tbData] where fdSequenceID<188
) select t.*,
cast(cast(100*((t.fdData/NULLif(d.fdData,0))-1) as numeric(25,10)) as varchar(50))+'%'
from f t
left join f d
on datediff(day,
DateAdd(day,d.id-1,DateAdd(month,d.fdSequenceID-1,'1900-1-1')),
DateAdd(day,t.id-1,DateAdd(month,t.fdSequenceID-1,'1900-1-1'))
) > 0 -- 会返回null

sqlserver 计算同比,环比增长的更多相关文章

  1. sqlserver计算时间差DATEDIFF 函数

    DATEDIFF 函数 [日期和时间] 功能 返回两个日期之间的间隔. 语法 DATEDIFF ( date-part, date-expression-1, date-expression-2 ) ...

  2. sqlserver计算日期

    在网上找到的一篇文章,相当不错哦O(∩_∩)O~ 这是计算一个月第一天的SQL 脚本:  SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) --当月的第一 ...

  3. sqlserver 计算数据库时间差

    介绍:datediff(datepart,startdate,enddate) 返回间隔datepart 的数 SELECT datediff(yy,'2010-06-1 10:10',GETDATE ...

  4. sqlserver 计算 百分比

    ,),))+'%' As 百分比 NUMERIC(P,S) P的默认值是:38 S的默认值是:-84~127 numeric(a,b)函数有两个参数,前面一个为总的位数,后面一个参数是小数点后的位数, ...

  5. SqlServer计算周岁的函数

    CREATE Function Dbo.GetAge ( @birthday datetime, @now datetime ) Returns int As Begin Declare @Age i ...

  6. Sqlserver 计算两坐标距离函数

    mark if exists (select * from dbo.sysobjects where id = object_id(N'UF_ETL_GetDistance') and xtype i ...

  7. Sqlserver计算本年度工作日

    --@StartDate 本年度第一天 --@EndDate 本年度最后一天 , ) , DATEADD(yy, , , )) IF EXISTS ( SELECT * FROM tempdb..sy ...

  8. 实现同比、环比计算的N种姿势

    在做数据分析时,我们会经常听到同比.环比同比的概念.各个企业和组织在发布统计数据时,通常喜欢用同比.环比来和之前的历史数据进行比较,用来说明数据的变化情况.例如,统计局公布2022年1月份CPI同比增 ...

  9. DataTable中Compute计算函数

    DataTable dt = new DataTable(); //嵌套的三元运算 牛叉到五体投地 object obj = dt.Compute("iif(1000=5,1000,iif( ...

随机推荐

  1. NGK生态所即将启程!助力NGK公链建立全方位区块链生态系统!

    据NGK官方消息,NGK生态所将暂定于2月15日正式上线.据了解,这是全球首个基于公链打造的生态所,也是NGK生态重要的应用之一. 此前,NGK灵石团队CTO通过多方媒体透露,NGK生态所采用去中心化 ...

  2. sublime 使用过程中遇到的问题

    1.当我把鼠标放置在下图所示的class上几秒钟后,sublime就会在全局查找当前的class字符,这时sublime就会出现卡顿或无响应 解决方法: 点击preferences下的settings ...

  3. 配置JDK环境及其相关问题

    1.首先找到JDK的安装目录 如果忘记了安装目录在那个地方,可以通过dos命令java -verbose,进行查看 配置jdk环境 新建系统变量JAVA_HOME: 编辑系统变量Path: 新建系统变 ...

  4. 1.3 PHP+MYSQL+APACHE配置(序)

    本节对服务器端web服务进行配置.事实上,对于配置这个环境(WAMP)网上还是有很多教程的,大家可以通过网上的教程完成配置,也不必拘泥于本文.甚至网上有免费的服务器端软件可以选择,比如著名的phpst ...

  5. MySQL:初识数据库

    对于大型互联网公司来说,数据的重要性可能比软件本身更重要.据说淘宝业务系统的开发大概消耗约7000万人民币,而其保存的用户数据的价值远高于此,加上数据分析算法的加持,其产生的价值和收益无疑是巨大的,远 ...

  6. 使用ASP.NET Blazor Server 写混合桌面程序的疯狂想法

    开发本地桌面程序,使用进程内浏览器+进程内BLAZOR服务器,然后任性写功能,自由分发,放飞自我,大家看怎么样? 求评估,求批评 https://github.com/congzhangzh/desk ...

  7. [msys2]集成到右键菜单

    集成到右键菜单 在资源管理器中,空白处右键(right-clicking on folder backround in Windows Explorer)会弹出菜单,其中有如"在此处打开cm ...

  8. Centos7网络配置——设置固定ip

    有段时间没有用虚拟机了,这几天翻出了以前的虚拟机,写几个demo,但遇到了一个让人难受的问题.使用xshell远程连接虚拟机,命令还没敲几个,不到一分钟就自动断开了,只能重新再次连接.啥事都干不成,有 ...

  9. 元数据管理—动态表单设计器在crudapi系统中完整实现

    表单设计 在前面文章中,我们通过一系列案例介绍了表单设计的一些基本功能,表单设计起到非常重要作用,也是crudapi核心,所以本文会详细介绍表单设计中一些其它功能. 概要 表单字段column属性 列 ...

  10. div中如何让文本元素、img元素水平居中且垂直居中

    一.文本元素在div中的水平居中且垂直居中方法 html代码 <div id="box"> <p>文本元素</p> </div> c ...