我这个菜鸟解决不了的简单问题!!!(100分)

  • 主题发起人 主题发起人 joyman
  • 开始时间 开始时间
J

joyman

Unregistered / Unconfirmed
GUEST, unregistred user!
1)我在SQL SERVER中的a表是如下:编号 B1 B2 DATE
1 10.0 <NULL> 2001-1-3
2 <NULL> 10.0 2001-2-3
1 20.0 <NULL> 2001-3-3
3 <NULL> <NULL> 2001-4-3
.............
我想对具有相同编号的进行求和:
SQL: { seclect 编号 sum(B1+B2) from a
group by a
having sum(B1+B2) >=0 }
理应求出的单价和为 1--30.0
2--10.0
但为什么求出为NULL的,请教各位高手了
(因有特殊情况,所以不能将NULL写为0)有何办法?????

2)现想知如何对求出的数据集,取反集,有这个SQL函数吗?????????????
 
此处涉及到一个NULL值的问题,可以这样解决
seclect 编号 sum(ISNULL(B1,0)+ISNULL(B2,0)) from a
group by 编号
having sum(ISNULL(B1,0)+ISNULL(B2,0)) >=0

这样即可得出所需结果集
 
多谢 tczxm啦,我试了,

但还有个问题就是怎样取反集呀?谢谢了
 
tczxm的方法非常正确!
 
我也认为十分正确,现在我想知道第二个问题是:
现想知如何对求出的数据集取反集,有这个SQL函数吗?
请教各位大虾了
 
利用not exists( )
 
来迟了,NULL其实不是0,也不是空字符串,在数据库中它是一个三值逻辑,分TRUE,FALSE
,NULL三种
 
》to zhengzhijia,

可以说具体点吗,最好举个例;
 
.......有人答吗?
 
取反集

select 编号 from a where 条件
为你求出的数据集

select * from a where 编号 not in (select 编号 from a where 条件)
为反集
 
多谢各位啦,接受答案了
 
》tczxm
我试过好多次啦,not in 和 not exists( )都不行,大虾救救我呀


select 编号 from a where 条件 -----得出是一个集合,not in不行呀,not in要求
的是唯一记录吧
 
用了not in以后出现这个问题"Only one expression can be specified in the select
list when the subquery is not introduced
with EXISTS."
 
你的表有索引吗
 
有,索引对此有影响的吗?多谢啦
 
后退
顶部