首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1月、2月、3月、4月、5月、6月、7月、8月、9月、10月、12月和

1月、2月、3月、4月、5月、6月、7月、8月、9月、10月、12月和
EN

Stack Overflow用户
提问于 2016-08-03 13:28:57
回答 3查看 1.2K关注 0票数 0

每个月的数据都在那里,直到12月。我想获得一个新的列" sum“,它将合计到上个月。意思是,现在是八月了。因此,这笔款项应该放到7月份,如下面" sum“栏中的第一项所示。

代码语言:javascript
复制
Jan| Feb| Mar| Apr| May| Jun |Jul |Aug |Sum     
21 | 28 | 26 | 31 | 54 | 67  |38  |29  |265             
11 | 44 | 66 | 7  | 88 | 54  |90  |74  |                
13 | 45 | 26 | 38 | 36 | 39  |67  |49  |            
76 | 35 | 67 | 23 | 76 | 54  |35  |59  |    
EN

回答 3

Stack Overflow用户

发布于 2016-08-03 13:44:16

因为月份是封闭的,所以我更喜欢这个简单的解决方案:

代码语言:javascript
复制
SELECT *,
    CASE WHEN DATEPART(MONTH, @date)<=1 THEN 0 ELSE Jan END +
    CASE WHEN DATEPART(MONTH, @date)<=2 THEN 0 ELSE Feb END +
    CASE WHEN DATEPART(MONTH, @date)<=3 THEN 0 ELSE Mar END +
    CASE WHEN DATEPART(MONTH, @date)<=4 THEN 0 ELSE Apr END +
    CASE WHEN DATEPART(MONTH, @date)<=5 THEN 0 ELSE May END +
    CASE WHEN DATEPART(MONTH, @date)<=6 THEN 0 ELSE Jun END +
    CASE WHEN DATEPART(MONTH, @date)<=7 THEN 0 ELSE Jul END +
    CASE WHEN DATEPART(MONTH, @date)<=8 THEN 0 ELSE Aug END +
    CASE WHEN DATEPART(MONTH, @date)<=9 THEN 0 ELSE Sep END Sum
    --Append 3 more months to DECEMBER
FROM Months
票数 2
EN

Stack Overflow用户

发布于 2016-08-03 13:38:43

代码语言:javascript
复制
SELECT
  Jan,Feb,Mar,Apr, and so on...
  ,COALESCE(Jan,0) + COALESCE(Feb,0) + COALESCE(Mar,0) + COALESCE(Apr,0)..(till Dec) AS "Sum"
FROM MyTable

如果行条目为NULL,则SUM将为NULL,因此是将NULL转换为零的COALESCE-Function

票数 0
EN

Stack Overflow用户

发布于 2017-04-03 18:16:32

代码语言:javascript
复制
DECLARE @DATE date
SET @date = GETDATE()
SELECT LEFT(DATENAME(MM, @DATE), 3)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38735099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档