sum(coalesce())返回1小于真值

时间:2013-12-04 06:38:35

标签: sql sqlplus

我有一个表有2列保留主页和远离团队ID然后2列保留主页和远点,我想查询数据库,以便它返回特定团队获得的总点数。这是我的代码,它返回一个比实际值少1的答案,它为我尝试的每个团队做到了,为什么会这样?

select sum(coalesce(hpoints,apoints)) Points
from plays_a
where (tawayid='2013T1' or thomeid='2013T1')

谢谢

将尝试此其他查询。

编辑 - 似乎没有工作,它返回5这个数据。

HPOINTS    THOMEID    APOINTS    TAWAYID
---------- ---------- ---------- ----------
       1.5 2013T5            2.5 2013T6
         3 2013T4              1 2013T1
         2 2013T6              2 2013T3
         2 2013T2              2 2013T5
         3 2013T6              1 2013T1
         3 2013T2              1 2013T3
       2.5 2013T4            1.5 2013T5
         1 2013T3              3 2013T1
         1 2013T4              3 2013T2
         3 2013T6              1 2013T5
         3 2013T3              1 2013T2

NEVERMIND看起来是正确的会再次尝试使用其他团队并回发

1 个答案:

答案 0 :(得分:1)

我想你想要这个查询:

select sum(CASE WHEN thomeid='2013T1' THEN hpoints ELSE apoints END) Points
from plays_a
where (tawayid='2013T1' or thomeid='2013T1')

在原始查询中,如果不是NULL,即使球队是客场球队,你也总是拿着主队得分。这似乎不正确。当然,您的表格可能完全奇怪,并且始终只填写任何特定行中的主列,但这不是我期望数据看起来和看起来不像的方式符合你的描述。