ric*_*mer 0 sql-server stored-procedures sql-server-2008
我有一个SQL查询的结果集.通过对每年租户的销售进行分组以获得每年的总销售额来得出这一结果.表名为TENANTSALES,列为:租户,日期,销售等.
TENANT YEAR SALES
tenant 1 2014 2000
tenant 1 2015 5000
tenant 2 2013 1000
tenant 2 2014 1500
tenant 2 2015 800
Run Code Online (Sandbox Code Playgroud)
我使用这个SQL查询代码来实现上述结果
select tenant, year(date), SUM(sales)
from tenantSales
group by tenant, YEAR(date)
Run Code Online (Sandbox Code Playgroud)
我需要完成的任务是添加一个列名称年度增长,它将比较和计算每个租户的销售额逐年增长.这是样本正确/期望的输出
TENANT YEAR SALES YEARLY GROWTH
tenant 1 2014 2000
tenant 1 2015 5000 150%
tenant 2 2013 1000
tenant 2 2014 1500 50%
tenant 2 2015 800 -46.67%
Run Code Online (Sandbox Code Playgroud)
公式为:((最近一年 - 上一年度)/上一年度)*100
租户1的示例:
((2015年销售额 - 2014年销售额)/ 2014年度销售额)*100 = 150%
香港专业教育学院试图做到这一点,在去年的第二年增加了一年,让我很容易计算两年的销售额,但我不能把最近一年的销售额加起来,只有一年本身.有没有办法或正确的方法呢?
select tenantcode, year(date), SUM(gsc), year(date) + 1
from dailymod
where tenantcode = 'cmbina13'
group by tenantcode, YEAR(date)
Run Code Online (Sandbox Code Playgroud)
您的专业建议将受到高度赞赏.谢谢
试试这个查询:
SELECT t1.tenant, t1.YEAR, t1.SALES,
CASE WHEN t2.YEAR IS NOT NULL THEN
FORMAT(
CONVERT(DECIMAL(10, 2), (t1.SALES - t2.SALES)) /
CONVERT(DECIMAL(10, 2), t2.SALES), 'p')
ELSE NULL END AS "YEARLY GROWTH"
FROM
(
SELECT tenant, YEAR(date) AS YEAR, SUM(sales) AS SALES
FROM tenantSales
GROUP BY tenant, YEAR(date)
) t1
LEFT JOIN
(
SELECT tenant, YEAR(date) AS YEAR, SUM(sales) AS SALES
FROM tenantSales
GROUP BY tenant, YEAR(date)
) t2
ON t1.tenant = t2.tenant AND t2.YEAR = t1.YEAR - 1
Run Code Online (Sandbox Code Playgroud)
点击下面的链接查看工作演示:
晚更新:
您也可以使用Common Table Expressions尝试相同的方法.以下是使用此方法的上述查询:
WITH cte AS(SELECT tenant, YEAR(date) AS YEAR, SUM(sales) AS SALES
FROM tenantSales
GROUP BY tenant, YEAR(date))
SELECT c1.*, CONVERT(varchar,
CONVERT(DECIMAL(10,2),
CONVERT(DECIMAL(10, 2), (c1.SALES - c2.SALES)) /
CONVERT(DECIMAL(10, 2), c2.SALES))) + '%' AS "YEARLY GROWTH"
FROM cte c1
LEFT JOIN cte c2 ON c1.tenant = c2.tenant AND c2.YEAR = c1.YEAR - 1
Run Code Online (Sandbox Code Playgroud)
这里有另一个小提琴,你可以测试一下:
| 归档时间: |
|
| 查看次数: |
14473 次 |
| 最近记录: |