ID M1 M2 M3 M4 DateM2 DateM3 DateM4
1 2 NULL NULL NULL NULL NULL NULL
2 NULL 2 1 1 11.11.2011 15.11.2011 20.11.2011
3 1 NULL NULL NULL NULL NULL NULL
4 2 3 1 2 11.12.2012 12.12.2012 13.12.2012
5 1 1 1 1 11.10.2012 12.10.2012 13.10.2012
6 2 2 2 2 12.9.2012 12.12.2012 1.2.2013
我想生成下表,其中包含ID列和新列
ID M1+M2+M3+M4
1 2
2 4
3 1
4 8
5 4
6 8
新列将是M1 + M2 + M3 + M4,具有以下规则
DATE1和DATE2是查询中指定的变量,现在我的问题我不知道该怎么用于表现我有几十个记录,如果我使用精选案例,欢迎你帮助你的方式可以!
答案 0 :(得分:2)
这样的事情:
SELECT
t.ID,
isnull(t.M1,0)+
CASE WHEN t.DateM2 is not null AND @DATE1 < t.DateM2 < @DATE2
THEN t.M2
ELSE 0 END +
CASE WHEN t.DateM3 is not null AND @DATE1 < t.DateM3 < @DATE2
THEN t.M3
ELSE 0 END +
CASE WHEN t.DateM4 is not null AND @DATE1 < t.DateM4 < @DATE2
THEN t.M4
ELSE 0 END AS 'M1+M2+M3+M4'
FROM Table1 t
答案 1 :(得分:1)
试试这个:
DECLARE @ Date1 AS DATETIME
DECLARE @ Date2 AS DATETIME
SET @ Date1 = '01 Jan 1900' - 设置日期在这里
SET @ Date2 = '01 Jan 1900' - 设置日期在这里
SELECT ID,ISNULL(M1,0)+
例如,当DateM2不为NULL且DateM2 BETWEEN @ Date1 AND @ Date2那么ISNULL(m2,0)ELSE 0 END +
例如,当DateM3不为NULL且DateM3 BETWEEN @ Date1 AND @ Date2那么ISNULL(m3,0)ELSE 0 END +
例如,当DateM4不为NULL且DateM4 BETWEEN @ Date1 AND @ Date2那么ISNULL(m4,0)ELSE 0 END
AS [NameOfColumnHere]
FROM [TablenameHere]