sql server-两个表之间存在值差异的sql嵌套事例



我在Microsoft的SQL Server Management Server 2007中导入了两个Excel工作表作为表,它们都是相同的,只是它们来自两个不同的日期。

我想做两件我很难做到的事:

  1. 计算我可以使用cast进行的两个表的值之间的月度差异,以及
  2. 内部联接,但我不能成功地使用这些值来将这些值与嵌套的情况相加,比如:

    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)

最新更新