我想用SQLServer找出月销售额的增长百分比。我想通过使用self-join和前面的行没有边界的分区来找到销售增长的百分比。我不想使用 lag()
. 有谁能告诉我生成这个解决方案的方法吗。
这是我的table。
create table growth_new(slno bigint,mon varchar(30),sales_amount bigint)
insert into growth_new values(1, 'Jan', 5000)
insert into growth_new values(2, 'Feb', 12000)
insert into growth_new values(3, 'Mar', 32000)
insert into growth_new values(4, 'Apr', 20000)
Slno Mon sales_amount
1 Jan 5000
2 Feb 12000
3 Mar 32000
4 Apr 20000
3条答案
按热度按时间rjzwgtxy1#
你可以用
lag()
. 如果slno
对行进行排序,然后:对于这个问题,自联接实际上没有意义。但如果确实需要使用此数据结构:
但是,您应该真正修复数据,以便
month
格式合理。rdrgkggo2#
如果你不想使用
LEAD
或者LAG
,可以使用以下选项:我假设您可以使用id进行比较,否则,您可以有一个表来存储月份id
输出为:
希望这对你有帮助
wnavrhmk3#
除非你想尝试其他方法,否则你真的可以使用lag函数。同样如上所述,你的月格式是不理想的,不可扩展的。