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

你可能感兴趣的:(sql)