我的表中有一个总销售额。这将重复5年的数据。
Year | Sales £
_____|___________
2013 | £100,000
2014 | £150,000
2015 | £135,000
2016 | £200,000
我想添加一个新列,显示每行之间的差异。
Year | Sales £ | % diff
_____|__________|_________
2013 | £100,000 |
2014 | £150,000 | 50
2015 | £135,000 | (10)
2016 | £200,000 | 48.1
使用MDX查询返回数据。
我想在报告中使用表达式执行此操作,这可能吗?
我感谢任何建议,但想知道这是否可以在报告级别完成。
由于
答案 0 :(得分:2)
表达式如下:
select t.*,
100 * (sales - lag(sales) over (order by year)) / lag(sales*1.0) over (order by year)
from t;
您可以在应用程序级别格式化数字。
此表达式可简化为:
select t.*,
100 * (-1 + sales / lag(sales*1.0) over (order by year))
from t;
答案 1 :(得分:0)
在数据集中更容易实现,而不是报表中的表达式。使用LAG
:
WITH CTE AS (
SELECT *
FROM (VALUES (2013,100000),(2014,150000),(2015,135000),(2016,200000)) V([Year],Sales))
SELECT [Year], Sales,
CONVERT(decimal(12,4),CONVERT(decimal(12,4),Sales) / LAG(Sales) OVER (ORDER BY [Year])) - 1 AS Diff
FROM CTE;
答案 2 :(得分:0)
试试这个:
declare @x table ([Year] int, Sales int)
insert into @x values
(2013, 100000),
(2014, 150000),
(2015, 135000),
(2016, 200000)
select [YEAR],
Sales,
cast(round(100.00*(Sales - LAG(Sales, 1) over (order by Year))/LAG(Sales, 1) over (order by Year), 2) as float) as [% diff]
from @x