sql语句查询,根据一个表中一个列,该列在两个不同条件同时满足的查询结果

比如dollar表字段如下:
id type money
1 a 100
2 b 200
3 c 300
4 d 400
5 e 500

我想查询(type not in(a)但sum(money)>=300 )且(type in(c,d)但sum(money)<300 )中所有的结果

我写的sql如下:执行时提示"关键字 'group' 附近有语法错误。",请教达人是哪里错了,正确是怎么写的。

select id from dallar
where type not in(a) group by id having sum(money)>=300
and type in(c,d) group by id having sum(money)<=300
可以肯定的是,我要查询的内容逻辑上是没问题的,只不过我写的查询sql:
select id from dallar
where type not in(a) group by id having sum(money)>=300
and type in(c,d) group by id having sum(money)<=300
(按照我的要求,最后一句应该是<300,而不是<=300)
-------------------------------------------------------------------------------------------
经本人实际验证,“落月Prc ”同学提供的解决sql是完全正确的,而“ytbelwxg ”同学提供的方案,一开始我也以为是正确的,但不知道为什么实际验证时确实不对,不知道“Union”这种语法是不是不能用在同一张表中还是别的原因,也希望有达人给出为什么不对的解释。

第1个回答  2011-07-27
ytbelwxg 的答案是正解
第2个回答  2011-07-27
id 不是唯一的? 你用id来分组查询?
第3个回答  2011-07-27
你语句里的in(a) 那个a应该是要加单引号的吧
in(c,d) c和d也是要加单引号的

sql语句查询,根据一个表中一个列,该列在两个不同条件同时满足的查询结果...
1、在计算机中,打开Foxtable软件,新建一个表格,比如学生的评价成绩表,并输入数据,如下图所示。2、接着,鼠标左键单击选择菜单下的【杂项】,如下图所示。3、 然后,在菜单栏目中,鼠标左键单击【SQL查询】,如下图所示。4、接着,在【SQL查询】窗口上,选择数据源,如下图所示。5、然后,在...

sql语句,查出同一表中同一列不同类型的数据同时查出。
or是或者,其一匹配就会显示,所以33和34都会显示 and是而且,也就是两个条件必须同时满足

sql 中如何查询一个字段符合两个条件
1.在计算机中,打开Foxtable软件,新建一个表格,如学生评价结果,并输入数据,如下图所示。2.然后,鼠标左键单击单键攻击菜单下选择[杂项],如下图所示。3.然后,在菜单列中,左键单击[SQLquery],如下图所示。4.接下来,在[SQLquery]窗口中选择数据源,如下图所示。5.然后,在[SQLquery]窗口中...

求SQL查询语句,同一张表同一列按照不同的查询条件,显示不同的数据
SELECT 单号, (CASE WHEN 单号 LIKE 'QW%' THEN 1 WHEN 单号 LIKE 'TH%' THEN -1 ELSE 0 END) * 金额 FROM A

sql如何查询某列满足两种情况中一个并且另一列相等的记录
select 竞买人 from 竞买人信息 where 竞买期号='a' and 竞买标的 in ('b','c') group by 竞买人 having count(*)=2 这样?

SQL语句 如何查找一张表里两个字段符合条件的内容
大数据查询跟字段是否有索引也有关系的 1、select from test where a in ('x1','x2') and b in ('y1','y2')不知道是不是要这样的

sql查询一个表内包含某个字段值对应的两个字段的所有数据
实现SQL语句如下(假设表名为T1):select a.* from T1 a where exists(select 1 from T1 b where b.id=77 and b.starttime=a.starttime and b.score=a.score and b.endtime=a.endtime);

sql语句如何查询一个表中某一列的不同数据?
select * from 表名称 where "工装(字段名)=工装名,辅料(字段名)=辅料,站位(字段名)=站位"

sql select 语句请教,一个表中的列1、列2对比出不同的数据。
问题中列2有空值,空值不能直接参与比较,所以比较的时候先转换成一个特殊的值,然后再进行比较。下列语句是,当列2的是空值时,转换成一个空格。查询列1中的值不同于列2值的记录:select * from 表 where 列1 not in (select nvl(列2,‘ ’) from 表);查询列2中的值不同于列1值的记录:...

如何用SQL语句查找在一个表中有记录在而另外一个表中没有记录
如果是关联的话,可以用左连接或右连接 如果不关联的话,就查询公共字段 如 select * from table1 where id not in (select id from table2)

相似回答