select ct.cid 客户ID,ct.cnum 客户编号,ct.cname 客户名称,count(jt.did) 全部结算次数,count(jt.jfs) 现金次数
from ct,dt,jt
where ct.cid = dt.cid
and dt.did = jt.did
and jt.jsf = '现金'
group by ct.cid,ct.cnum,ct.mingcheng
having count(jt.did) = count(jt.jfs)
order by ct.cid asc
上面这段代码只能查询到客户使用现金次数的数据,与统计目标完全不同,请教该如何修改语句才能达到目的? ------最佳解决方案-------------------- select ct.cid 客户ID,ct.cnum 客户编号,ct.cname 客户名称,count(jt.did) 全部结算次数,sum(case when jt.jfs='现金' then 1 else 0 end) 现金次数
from ct,dt,jt
where ct.cid = dt.cid
and dt.did = jt.did
group by ct.cid,ct.cnum,ct.mingcheng
order by ct.cid asc ------其他解决方案--------------------
------------------------------------------
这样确实查出了客户的总结算次数和使用现金的次数,统计目标比这个更细一点,要的是其中总结算次数与使用现金次数相等的数据——即查询每次结算都是使用现金的。 ------其他解决方案-------------------- having count(jt.did)=sum(case when jt.jfs='现金' then 1 else 0 end)
加上不就行了 ------其他解决方案-------------------- select kehu.kh_id 客户ID,kehu.jianma 客户编号,kehu.mingcheng 客户名称,count(huidan_mingxi.huidan_id) 全部结算次数,sum(case when huidan_mingxi.huifufangshi = '现金'
then 1