sql语句合并的问题
时间:2010-09-26
来源:互联网
数据结构如图:
简单点说,先说一个数据好了。
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条。
在线等待高手。
简单点说,先说一个数据好了。
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
对你的问题不是很了
用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
复制内容到剪贴板
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
------------------------代码:
如果要把两条合并的话,下面的写法就数据不对了,虽然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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28