每个月的数据都在那里,直到12月。我想获得一个新的列" sum“,它将合计到上个月。意思是,现在是八月了。因此,这笔款项应该放到7月份,如下面" sum“栏中的第一项所示。
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 | 发布于 2016-08-03 13:44:16
因为月份是封闭的,所以我更喜欢这个简单的解决方案:
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发布于 2016-08-03 13:38:43
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
发布于 2017-04-03 18:16:32
DECLARE @DATE date
SET @date = GETDATE()
SELECT LEFT(DATENAME(MM, @DATE), 3)https://stackoverflow.com/questions/38735099
复制相似问题