日期:2014-05-16  浏览次数:20972 次

[求]SQL语句(想了很久都没想到)
现在有三个表
province表(id,provinceName)
client表(id,clientname,provinceid)
order表(id,clientid,level,price)

其中,level字段只存a,b,c(理解为代号吧)

现在看看能用用一句sql语句,或者用一个存储过程,能得出下面的查询结果.
____________________________________________
| 省份 | 客户数 | oa总额 | ob总额 | oc总额 |
--------------------------------------------

意思就是该省份共有客户数多少人,该省份的oa,ob,oc总额各是多少..

比如:
____________________________________________
| 省份 | 客户数 | oa总额 | ob总额 | oc总额 |
--------------------------------------------
|广东省| 20 | 3000 | 3229 | 339 |
--------------------------------------------
就是广东省有客户数20人,oa总额3000元,ob总额3229元,oc总额339元.

求好心人士帮帮忙..

------解决方案--------------------
未测试:
SQL code
select 
    provinceName as '省份', 
    count(clientname) as '客户数', 
    sum(if(level='a', 1, 0)) as 'oa总额', 
    sum(if(level='b', 1, 0)) as 'ob总额', 
    sum(if(level='c', 1, 0)) as 'oc总额'
from 
    order 
    left join
    client
    on order.clientid = client.id
    left join
    province
    on client.privinceid = province.id
group by provinceName

------解决方案--------------------
http://blog.csdn.net/acmain_chm/article/details/4283943
MySQL交叉表
在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx( id int primary key, c1 c...