about query(100分)

  • 主题发起人 主题发起人 yangyj
  • 开始时间 开始时间
Y

yangyj

Unregistered / Unconfirmed
GUEST, unregistred user!
各位朋友:
我要将两个查询s1,s2合并在一起,组成一个查询query,
s1,s2的记录可能为空。
问题是:假设s1的记录为空,s2的记录有一个值。如何作到:
query的记录有一个值。
我的作法1:
Select carry_ton=s1.carry_ton+s2.carry_ton from
(select carry_ton=sum(carry_ton) from coursedata) s1,
(select carry_ton=sum(carry_ton) from shipdata) s2

此做法,当s1的记录为空,s2的记录有一个值,query的记录也为空。
我的作法2:
Select carry_ton=s1.carry_ton+s2.carry_ton from
(if exists(select * from coursedata)
select carry_ton=sum(carry_ton) from coursedata
else
select carry_ton=0 from coursedata) s1,
(IF EXISTS (select * from shipdata)
select carry_ton=sum(carry_ton) from shipdata
else
SELECT carry_ton=0 FROM SHIPDATA) s2
Active此query,
电脑提示:line5,incorrect syntax near')',
line9,incorrect syntax near')'
请问,我应如何作?
 
Select carry_ton=IsNULL(s1.carry_ton,0)+IsNull(s2.carry_ton,0) from
(select carry_ton=sum(carry_ton) from coursedata) s1,
(select carry_ton=sum(carry_ton) from shipdata) s2
 
yangyj:
现在是不是已经正确了,快给我加分.....呵呵.... {B-)
 
IsNull还不知道它的数据库支持不支持呢
 
NULL变 0:(版权所有:Pipi.)

cast( ('' || cast( fieldname as VarChar(30))) as numeric )
即使 fieldname 是 null 值也变 0
 
Pipi. 的方法什么数据库都灵(虽然写起来麻烦一点),包括local sql
 
呵呵。cast函数不知道它的数据库支持不支持呢?
 
To Pipi.
Local SQL 不支持他的语句!
MsSQL &
Sybase数据库:
Select carry_ton=IsNULL(s1.carry_ton,0)+IsNull(s2.carry_ton,0) from
(select carry_ton=sum(carry_ton) from coursedata) s1,
(select carry_ton=sum(carry_ton) from shipdata) s2

Oracle:
Select carry_ton=NVL(s1.carry_ton,0)+NVL(s2.carry_ton,0) from
(select carry_ton=sum(carry_ton) from coursedata) s1,
(select carry_ton=sum(carry_ton) from shipdata) s2

 
cast是sql标准,什么数据库都支持它
 
谢谢 沈前卫,Pipi:
我的数据库是SQL7.0,用沈前卫下面的方法可以很好解决我的问题:
Select carry_ton=IsNULL(s1.carry_ton,0)+IsNull(s2.carry_ton,0) from
(select carry_ton=sum(carry_ton) from coursedata) s1,
(select carry_ton=sum(carry_ton) from shipdata) s2

 
后退
顶部