【问题标题】:Is it Possible to Join these 2 Tables是否可以加入这两个表
【发布时间】:2013-03-09 12:56:18
【问题描述】:

我有两张桌子

表 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 |
+------------+----------+-------------+

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

提前感谢任何帮助!

【问题讨论】:

  • 在table_b中,“entry”映射到哪一列?是 entry_from 还是 entry_to?
  • 这就是问题所在 - 我希望它在条目之间进行映射

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


【解决方案1】:

请尝试:

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

【讨论】:

  • 非常感谢所有 3 个答案!由于这是第一个,我将其标记为已接受的答案。唯一的问题是查询似乎需要很长时间才能执行,有没有办法解决这个问题?
【解决方案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 :)

【讨论】:

    【解决方案3】:

    这是一个有效的小提琴: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
    

    【讨论】:

      猜你喜欢
      • 2015-03-09
      • 1970-01-01
      • 2010-09-15
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多