我需要进行计算,我从列“A”中得到总和值,然后除以“B”列的总和值,与值相差1个月。
示例:
Date A B
2015-02-31 796.92 885.47
2015-02-31 932.2900 932.29
2015-02-31 803.29 1147.56
2015-02-31 839.1800 839.18
2015-02-31 139.20 143.50
2015-02-31 299.64 308.91
2015-02-31 125.47 129.35
2015-02-31 117.98 393.27
2015-02-31 0.00 747.68
2015-01-31 735.29 758.03
2015-01-31 0.00 683.24
2015-01-31 0.00 734.25
2015-01-31 323.64 333.65
2015-01-31 442.36 456.04
2015-03-31 52.84 54.47
2015-03-31 0.00 549.96
2015-03-31 462.24 476.54
所以我需要使用B中的值除以前一个月的A值...
A B
2015-02-31 442.36 456.04
2015-03-31 52.84 54.47
在这种情况下,上面将是54.47 / 442.36。
因此,我需要使用SQL中的表来将结果显示在仪表板中。
有人可以帮我吗?
谢谢!
答案 0 :(得分:1)
您想要lag()
功能:
select date, a, b,
b / coalesce(lag(a) over (order by date), 0) as Result
from(select date, sum(A) as a, sum(B) as b
from table
group by date
) t;
但是,这假设date
列在单个月中没有任何日期,如o / p所述,如果是,则使用datepart()
或month()
功能并相应地调整subquery
。
答案 1 :(得分:0)
可以尝试使用sql server中的Window函数 https://www.sqlshack.com/use-window-functions-sql-server/