【问题标题】: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 = 2 和 tableB 的值为 =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