+ -
当前位置:首页 → 问答吧 → sql语句合并的问题

sql语句合并的问题

时间:2010-09-26

来源:互联网

数据结构如图:
1.jpg (20.15 KB)
2010-9-26 13:09

简单点说,先说一个数据好了。
select iif(isnull(sum(no1)),0,sum(no1)) from pms where DATEDIFF('m',date1,'2010-9')=0
这一条是OK的。找到的结果是20.
select iif(isnull(sum(no2)),0,sum(no2)) from pms where DATEDIFF('m',date2,'2010-9')=0
这一条也是OK的。结果是30.

如果要把两条合并的话,下面的写法就数据不对了,虽然SQL可以出结果,但是数据是不对的,因为条件里用的是OR,那出来的数据就多了,结果是60,如果用and,出来的数据又少了,结果是40。正确结果应该是50.
select
iif(isnull(sum(no1)),0,sum(no1)),
iif(isnull(sum(no2)),0,sum(no2))
from pms where
DATEDIFF('m',date1,'2010-9')=0 or
DATEDIFF('m',date2,'2010-9')=0

我想应该把后面的条件移动到前面去。
select
iif(isnull(sum(no1)),0,iif(DATEDIFF('m',date1,'2010-9')=0,sum(no1),0)),
iif(isnull(sum(no2)),0,iif(DATEDIFF('m',date2,'2010-9')=0,sum(no2),0))
from pms
但是这样SQL不出数据。加了group by date1,date2 也出不来。

请教如何合并两条SQL呢?最终我要合并7条。
在线等待高手。

作者: jimstory   发布时间: 2010-09-26

对你的问题不是很了
复制内容到剪贴板
代码:
如果要把两条合并的话,下面的写法就数据不对了,虽然SQL可以出结果,但是数据是不对的,因为条件里用的是OR,那出来的数据就多了,结果是60,如果用and,出来的数据又少了,结果是40。正确结果应该是50.
select
iif(isnull(sum(no1)),0,sum(no1)),
iif(isnull(sum(no2)),0,sum(no2))
from pms where
DATEDIFF('m',date1,'2010-9')=0 or
DATEDIFF('m',date2,'2010-9')=0
------------------------
用union吧
select iif(isnull(sum(no1)),0,sum(no1)) from pms where DATEDIFF('m',date1,'2010-9')=0
union
select iif(isnull(sum(no2)),0,sum(no2)) from pms where DATEDIFF('m',date2,'2010-9')=0

作者: TomiEric   发布时间: 2010-09-26