求救:表结构是,一张feeshet表,里面每个seq(序号)可能有多个消费条目,还有一张表是person(消费者),里面的seq就是单一的。现在我要查feeshet中一条记录都没有的消费者,或者是feeshet中有记录,但是消费金额为0的,其中feeshet中单价为price,数量为amout,退费后数量为0记录。为什么我这个语句什么都查不出来?
HAVING SUM(price*amount) is null or SUM(price*amount)=0.00
------解决方案--------------------
不加having时,返回的数据中有没有符合 SUM(price*amount) is null or SUM(price*amount)=0.00的数据?
------解决方案--------------------
select *
from (
select SUM(price*amount)[sum],COUNT(in_seq) [count]
from inusemed)a
where [sum] is null or [count]=0
------解决方案--------------------
person 表有而 feeshet 表中没有的 seq 不会在对 feeshet 表进行 GROUP BY 时在结果中多出来。
查询 feeshet 表就只针对 feeshet 表中出现的所有 seq 进行处理。
你的需求应该用
SELECT seq
FROM person
WHERE NOT EXISTS (SELECT *
FROM feeshet
WHERE feshet.seq = person.seq
AND ISNULL(price * amount, 0.00) <> 0.00)
又:
a)消费金额作为冗余字的存起来,查询时不用计算性能会好一点。
b)消费金额添为计算字段,查询语句写得方便、也更容易阅读。
------解决方案--------------------
这个比较高,不容易想到的查询条件