【问题标题】:how to SUM two different columns in two different table between two date如何在两个日期之间对两个不同表中的两个不同列求和
【发布时间】:2016-03-14 20:07:23
【问题描述】:

以下是我的查询:

select sum(tableA.value)+sum(tableB.value1) ) from tableA,tableB where tableA.data between '2016-01-21' and '2016-03-09' and tableB.date2 between '2016-01-21' and '2016-03-09'

但是当行数不同时结果是错误的。 示例 tableA.value = 2tableB 的值为 =3 和 5 result =12

这是错误的。结果应该是 10

【问题讨论】:

    标签: sql-server sql-server-2008 sql-server-2005 sql-server-2012


    【解决方案1】:
    ;with sumA as (
        select sum(tableA.value) value from tableA 
         where tableA.data between '2016-01-21' and '2016-03-09'
    ), sumB as (
        select sum(tableB.value) value from tableB 
         where tableB.date2 between '2016-01-21' and '2016-03-09'
    )
    select a.Value + b.Value from sumA, sumB;
    

    【讨论】:

      【解决方案2】:

      请尝试以下查询

      SELECT 
          SUM(A.value) OVER (PARTITION BY A.date order by A.date) + 
          SUM(B.value) OVER (PARTITION BY B.date order by B.date) 
      FROM
      (select value, date from tableA where date between '2016-01-21' and '2016-03-09')A --2, d1
      CROSS JOIN 
      (select value, date from tableB where date between '2016-01-21' and '2016-03-09')B --3,d2 and 5,d3
      --Result of CROSS JOIN is below
      --2,d1,3,d2
      --2,d1,5,d3
      -- which gives result as 
      --2+8=10
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 2020-07-19
        相关资源
        最近更新 更多