一个表中的SQL sum列,其中另一个表中的值是' S'

时间:2016-12-30 15:22:02

标签: sql informix

我有两张桌子:

[rolls]
tappi zone poids
N1001 101 502
N1002 102 502
N1003 103 1008
N1004 104 1008

[zones]
nom  type
101   P
102   P
103   S
104   S

我想要做的是总结'。' poids'如果' roll'。' zone'有类型' S' (根据表格'区域')

输出应为2016(1008 + 1008)

2 个答案:

答案 0 :(得分:1)

SELECT SUM(t1.poids)
FROM rolls t1
INNER JOIN zones t2
    ON t1.zone = t2.nom
WHERE t2.type = 'S'

我们可以在此安全地执行INNER JOIN,因为如果来自rolls的记录与zones中的任何内容不匹配,那么我们就知道它不能是区域类型S

答案 1 :(得分:1)

SELECT SUM(rolls.poids)FROM roll JOIN区域ON rolls.zone = zones.nom WHERE zones.types =' S';

使用 JOIN ,我们正在寻找滚动表区域表所拥有的数据,并使用 ON < / strong>我们限制找到他们有一个共同列的数据。这里的目标是组合这些表。这样就会发生:

[[rolls] JOINED [zones]]
tappi zone poids nom type
N1001 101 502    101 P
N1002 102 502    102 P
N1003 103 1008   103 S
N1004 104 1008   104 S

使用我们将更多分段查询的位置仅查找类型为 S 的记录。所以现在你看:

[[rolls] JOINED [zones]]
tappi zone poids nom type
N1003 103 1008   103 S
N1004 104 1008   104 S

更进一步,你会寻找这个记录并对自己说。我只是想要这些poids的总和。那么你使用 SELECT SUM(rolls.poids),最终的结果是:

[sum(rolls.poids)]
   2016