我在Microsoft的SQL Server Management Server 2007中导入了两个Excel工作表作为表,它们都是相同的,只是它们来自两个不同的日期。
我想做两件我很难做到的事:
- 计算我可以使用
cast
进行的两个表的值之间的月度差异,以及 -
内部联接,但我不能成功地使用这些值来将这些值与嵌套的情况相加,比如:
SELECT SUM( CASE WHEN ID <>'MISSING' THEN CASE WHEN SUM(VALUE)>=0 THEN SUM(VALUE) ELSE 0 END END)
我尝试了很多不同的方法,但我得到的主要错误之一是:
无法对包含聚合或子查询的表达式执行聚合函数。
数据是这样的:
dbo.Table1
date(dd/mm/yy) | name | id | value
---------------+------+---------+-------
1/1/14 | A | MISSING | 56
1/1/14 | A | MISSING | -1
1/1/14 | B | YES | 56
1/1/14 | B | YES | -1
dbo.Table2
date(dd/mm/yy) | name | id | value
---------------+------+---------+-------
1/2/14 | A | MISSING | 24
1/2/14 | A | MISSING | -11
1/2/14 | B | YES | 24
1/2/14 | B | YES | -11
不要在另一个SUM
中使用SUM
,只保留外部的SUM
。此外,您的外部CASE
没有ELSE
部分,但在这种情况下,您可能也希望有0,所以为什么不使用单个CASE
条件呢?
SELECT SUM(CASE WHEN ID <> 'MISSING' AND VALUE >= 0 THEN VALUE ELSE 0 END)