【发布时间】:2019-06-17 17:26:23
【问题描述】:
我刚开始使用SQL,在用这种语言思考方面有些困难。
我现在有一个任务,我需要在表中创建一个新列,其中包含以前列的值。此计算基于少数几个条件。这甚至可以在 SQL 中轻松完成吗?
假设我有一个名为 dbo.country_sales 的表
Select *
From dbo.country
生成
CountryName, Year, Sales
—————————
Argentina, 2015, 10
Argentina, 2017, 22
Florida, 2015, 10
Florida, 2017, 8
Germany, 2015, null
Germany, 2017, null
我需要创建 2015 年至 2017 年之间的销售发展情况的第四列(2017 年的销售额 - 2015 年的销售额),因此表格如下所示:
CountryName, Year, Sales, Development
—————————
Argentina, 2015, 10, 12
Argentina, 2017, 22, 12
Florida, 2015, 10, -2
Florida, 2017, 8, -2
Germany, 2015, null, null
Germany, 2017, null, null
我知道如何在 select 语句中创建它,但它只计算 1 个值。尝试搜索了几个小时,但没有找到任何简单的东西。
感谢您的帮助。 局域网
【问题讨论】:
-
顺便说一句,佛罗里达州不是一个国家,我最后一次检查 ;)
-
您是否打算在阿根廷 2015 发展中获得 12 的值?还是您真的只希望在 2017 年的记录中使用它?
-
实际上我会计算 CAGR,但这只是一个例子。复合年增长率仅对选定时期的最后一年有意义。我可以在最后几年以外的其他年份输入相同的 CAGR 或 null。
标签: sql sql-server conditional-statements calculated-columns