大家帮看看这条SQL语句为什么不对啊?两个字段相加,第三个字段没有值啊

mimi5211 2008-10-30 03:02:58
select b.bmh as b,a.pycj as d41,b.pycj as d42,c.pycj as d43,a.pycj+b.pycj+c.pycj as zcj from t_1_a_41_pyjd a,t_1_a_42_pyjd b,t_1_a_43_pyjd c where a.bmh=b.bmh,b.bmh=c.bmh;
其中:
t_1_a_41_pyjd,t_1_a_42_pyjd,t_1_a_43_pyjd是三个表。我想把三个pycj加在一起啊。 
...全文
323 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinzhongdemeng 2010-04-30
  • 打赏
  • 举报
回复
刚好我可以借用一下··
yo_258 2008-11-04
  • 打赏
  • 举报
回复
除了nul()函数问题,看不出其他的问题呀
Well 2008-11-04
  • 打赏
  • 举报
回复
a.pycj+b.pycj+c.pycj应该是空值的原因导致。。用nvl(col,0)。。。
bsh_ly 2008-11-03
  • 打赏
  • 举报
回复
select b.bmh as b,a.pycj as d41,b.pycj as d42,c.pycj as d43,a.pycj+b.pycj+c.pycj as zcj from t_1_a_41_pyjd a,t_1_a_42_pyjd b,t_1_a_43_pyjd c where a.bmh=b.bmh,b.bmh=c.bmh;

CHange
where a.bmh=b.bmh,b.bmh=c.bmh;
to
where a.bmh=b.bmh and b.bmh=c.bmh;
rain_zheng 2008-11-03
  • 打赏
  • 举报
回复
语句好像有乱不太容易读呀,
bmarsoft 2008-11-03
  • 打赏
  • 举报
回复
nvl(a,0).这个可以避免为空。
icss_zhen 2008-11-02
  • 打赏
  • 举报
回复
呵,我觉的8楼发现了本质问题,如果有为空,可以将8楼的sql改下

SELECT B.BMH AS B,
A.PYCJ AS D41,
B.PYCJ AS D42,
C.PYCJ AS D43,
nvl(A.PYCJ,0) + nvl(B.PYCJ,0) + nvl(C.PYCJ,0) AS ZCJ
FROM T_1_A_41_PYJD A, T_1_A_42_PYJD B, T_1_A_43_PYJD C
WHERE A.BMH = B.BMH
AND B.BMH = C.BMH;
xcj0722 2008-11-02
  • 打赏
  • 举报
回复
jf
Ren20080808 2008-10-31
  • 打赏
  • 举报
回复
這個你再仔細看看,應該可以的
qwx312347236 2008-10-31
  • 打赏
  • 举报
回复
把B.BMH AS B修改一下已经改差不多。列的别名和表的别名是相同,可能存在引用问题
mantisXF 2008-10-30
  • 打赏
  • 举报
回复
--用AND连接多个FILTER CONDITIONS:
SELECT B.BMH AS B,
A.PYCJ AS D41,
B.PYCJ AS D42,
C.PYCJ AS D43,
A.PYCJ + B.PYCJ + C.PYCJ AS ZCJ
FROM T_1_A_41_PYJD A, T_1_A_42_PYJD B, T_1_A_43_PYJD C
WHERE A.BMH = B.BMH
AND B.BMH = C.BMH;
[Quote=引用楼主 mimi5211 的帖子:]
select b.bmh as b,a.pycj as d41,b.pycj as d42,c.pycj as d43,a.pycj+b.pycj+c.pycj as zcj from t_1_a_41_pyjd a,t_1_a_42_pyjd b,t_1_a_43_pyjd c where a.bmh=b.bmh,b.bmh=c.bmh;
其中:
t_1_a_41_pyjd,t_1_a_42_pyjd,t_1_a_43_pyjd是三个表。我想把三个pycj加在一起啊。 
[/Quote]
KK_101 2008-10-30
  • 打赏
  • 举报
回复
语句太长了吧
mimi5211 2008-10-30
  • 打赏
  • 举报
回复
大大们帮忙看看啊
mimi5211 2008-10-30
  • 打赏
  • 举报
回复
select b.bmh as b,a.pycj as d41,b.pycj as d42,a.pycj+b.pycj as zcj from t_1_a_41_pyjd a,t_1_a_42_pyjd b, where a.bmh=b.bmh;
这样两个加,没有问题啊,为什么加第三个就错了
mimi5211 2008-10-30
  • 打赏
  • 举报
回复
可是我只加前两个表的时候没有问题啊,t_1_a_41_pyjd,t_1_a_42_pyjd里面pycj也有为空的啊,能加出成绩字段啊
hebo2005 2008-10-30
  • 打赏
  • 举报
回复
nvl(字段,0)这样避免为空的情况
mimi5211 2008-10-30
  • 打赏
  • 举报
回复
有空怎么办啊,全部置成0吗
hyrongg 2008-10-30
  • 打赏
  • 举报
回复
是不是字段里面有null的情况?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧