SQL查询出的值怎么相加

SELECT count(*)from KJ_XMJB where (fXMCGXS>0 and fXMCGXS<5) or fXMCGXS=8 这个查询结果为3
SELECT count(*)from KJ_XMJB where fXMJSJJMB>0 AND fXMJSJJMB<3 这条查询结果为2
怎么两个值相加!结果为5呢??

--有两个方法

--楼下的是一种 tmp是表的别名
--两外一种就是 把条件合在一起就可以了 前提是二者没有交叉
select count(1) from KJ_XMJB
where ((fXMCGXS>0 and fXMCGXS<5) or fXMCGXS=8) or

(fXMJSJJMB>0 AND fXMJSJJMB<3)
--不明白可以随时问我 希望采纳追问

一共就三条数据!fXMCGXS>0 and fXMCGXS0 AND fXMJSJJMB<3) 这个的有两条!

结果一共5!
如果把代码上都加上表的别名t26 怎么加呢,,

追答

--我刚才已经说了有个前提就是二者没有交叉 如果结果是3条数据
--说明有同时满足你两个where条件的 别名是可以随便加 但不要整成一样 会有冲突

select sum(a) from
(
SELECT count(*) a from KJ_XMJB 别名1 where (fXMCGXS>0 and fXMCGXS0 AND fXMJSJJMB<3
) 别名3

追问

能给回答一下私信的问题么????谢谢了!

追答

如果你的表名是个查询的聚合 那就需要别名 比如我写的别名3 是必须要的 其他的可以不要 个人喜好而已
除了这个原因 另外一个报错原因就是字段不唯一 而没有明确知道 所以报错 前面加个表名就可以了
我给你的这个语句理论上是没有问题的
有问题你再问我

追问

追答

语法上 你的写法没有什么问题 这样吧 你把错误详细信息帖出来吧

追问

用的ksql,,可能不支持union all ,还有别的函数能代替这个计算么?

追答

--这样试试
select a+b ab from
(
SELECT count(*) a,
(SELECT count(*) a from KJ_XMJB 别名2 where fXMJSJJMB>0 AND fXMJSJJMB0 and fXMCGXS<5) or fXMCGXS=8
) 别名3

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-26
将两个值分别付给两个变量。将第一个count(*)改为count(1),第二个改为count(2),
count(1)+count(2)即可
第2个回答  2013-06-26
试试这样:

select sum(a) from
(
SELECT count(*) a from KJ_XMJB where (fXMCGXS>0 and fXMCGXS<5) or fXMCGXS=8
union all
SELECT count(*) a from KJ_XMJB where fXMJSJJMB>0 AND fXMJSJJMB<3
) tmp追问

tmp 是什么意思呢?

第3个回答  2013-06-26
select count(*) from (
SELECT * from KJ_XMJB where (fXMCGXS>0 and fXMCGXS<5) or fXMCGXS=8

union all
SELECT * from KJ_XMJB where fXMJSJJMB>0 AND fXMJSJJMB<3)
第4个回答  2013-06-26
SELECT count(*)from KJ_XMJB where (fXMCGXS>0 and fXMCGXS<5) or fXMCGXS=8
or fXMJSJJMB>0 AND fXMJSJJMB<3
相似回答