sql技巧篇

数据库针对sqlserver,其他数据库可能会有点变化

 

1.sqlserver 逐行累加

CREATE TABLE [dbo].[User](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](20) NULL,
    [Score] [int] NULL)

-- 逐行累加

SELECT t2.A, SUM(t1.A)
FROM (SELECT Score a, ROW_NUMBER() OVER(ORDER BY Id) RK from [User]) t1,   
     (SELECT Score a, ROW_NUMBER() OVER(ORDER BY Id) RK from [User]) t2
WHERE t1.rk <= t2.rk
group by t2.a 
ORDER BY T2.A

还有另一种,按天累计

--按天累加
select 年份,月份,销售日期,客户,产品,
 (select sum(金额)  as 按年月日累计金额 from tb where 年份=t.年份 and 月份=t.月份 
and 客户=t.客户 and 产品=t.产品 
and 销售日期<=t.销售日期) as 按年月日累计金额
from tb t

 

 

2.pivot函数,分月份相加(也有列转行的功能)

create table #r01
(年份 varchar(4),
 月份 varchar(2),
 人数 int
)

--计算每个月份的人数
select * from #r01 as x pivot(sum(积分人数) for 月份 in ([01月],[02月],[03月],[04月],[05月],[06月],[07月],[08月],[09月],[10月],[11月],[12月])) as y

 

持续补充。。。。。。

 

来自&参考:1.https://blog.csdn.net/chenhisen/article/details/50779079

https://blog.csdn.net/hebbers/article/details/72626872

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值