1、在计算机中,打开Foxtable软件,新建一个表格,比如学生的评价成绩表,并输入数据,如下图所示。
2、接着,鼠标左键单击选择菜单下的【杂项】,如下图所示。
3、 然后,在菜单栏目中,鼠标左键单击【SQL查询】,如下图所示。
4、接着,在【SQL查询】窗口上,选择数据源,如下图所示。
5、然后,在【SQL查询】窗口上,输入SQL查询语句,如下图所示。
6、 接着,在表格的预览中,可以看到通过查询语句所显示的数据了,如下图所示。
以下语句完美解决!
SELECT id FROM dollar WHERE
id in(SELECT id FROM dollar WHERE type NOT IN('a') GROUP BY id HAVING SUM([money])>=300)
AND
id in(SELECT id FROM dollar WHERE type IN('c','d') GROUP BY id HAVING SUM([money])<=300)
一个SQL语句中,一个from最多只能对应一个group by,所以你的having,也只能有一个。
按照你的逻辑sql应该这样
select id from dallar
where type not in('a') group by id having sum(money)>=300
INTERSECT
select id from dallar
where type in('c','d') group by id having sum(money)<300;
但是个人感觉你的逻辑有问题,
想查询(type not in(a)但sum(money)>=300 )且(type in(c,d)但sum(money)<300 )中所有的结果
那肯定只查的是type in(c,d) 但(sum(money)>=300 且sum(money)<300 )的了
你的条件是自相矛盾的
type not in a,我选择b, sum(money) >=300,
type in b c, 我也选择b,但是要满足sum(money) <300,这样的结果永远是空集。
Select Id
From Dallar
Where Type Not In (a)
Group By Id
Having Sum(Money) >= 300
Union
Select Id
From Dallar
Where Type In (c, d)
Group By Id
Having Sum(Money) <= 300