是否可以加入这两个表

时间:2013-03-20 12:21:13

标签: sql sql-server sql-server-2005 join between

我有2张桌子

表A:

+------------+----------+
| Entry From | Entry To |
+------------+----------+
|        100 |      103 |
|        104 |      105 |
|        106 |      109 |
+------------+----------+

表B:

+-------+-------+
| Entry | Value |
+-------+-------+
|   100 |    10 |
|   101 |     3 |
|   102 |     7 |
|   103 |     2 |
|   104 |     9 |
|   105 |    17 |
|   106 |     3 |
|   107 |     3 |
|   108 |     6 |
|   109 |     5 |
+-------+-------+

期望的结果:

+------------+----------+-------------+
| Entry From | Entry To | Total Value |
+------------+----------+-------------+
|        100 |      103 |          22 |
|        104 |      105 |          26 |
|        106 |      109 |          17 |
+------------+----------+-------------+

欢迎任何解决方案/建议。

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

请尝试:

Select 
    a.EntryFrom, a.EntryTo, sum(Value) TotalValue 
From TableA a INNER JOIN TableB b ON b.Entry between a.EntryFrom and a.EntryTo 
Group by a.EntryFrom, a.EntryTo

答案 1 :(得分:2)

你要找的是子查询。

SELECT 
    A.Entry_From, A.Entry_To, 
    (SELECT SUM(B.Value) FROM B 
        WHERE B.Entry BETWEEN A.Entry_From AND A.Entry_To) AS Total_Value
    FROM A

它还取决于SQL的版本,所以YMMV:)

答案 2 :(得分:2)

这是一个工作小提琴:http://www.sqlfiddle.com/#!2/afbac/2使用此查询:

select a.idxFrom, a.idxTo, sum(b.value) as total
from a inner join b on b.idx >= a.idxFrom and b.idx <= a.idxTo
group by a.idxFrom, a.idxTo