一条很简单的SQL,高手来帮忙.

来源:百度知道 编辑:UC知道 时间:2024/09/28 13:16:28
用户表
1 张三 男
2 李四 男
3 王五 男
4 赵六 女

银行开户表
帐号开户ID USER_ID
bank1 1
bank2 3
bank3 2

我想查询出来的结果,显示银行分别有男多少人开户,女多少人开户
就是
性别 开户数量
男 3
女 0

注意了.不是简单的关联一下ID count一下group by 一下

如果那样做的话,开户表没有 女 的开户记录.
就会查询出
性别 开户数量
男 3

我要求.查询出没有女的开户时 数量显示0
不难,但是有点逻辑. 希望高手解决。
真是感谢大家。可是分只能给一个人啊!!!!郁闷,,,, 我只好一条一条的测 谁的先通过了给谁分了.

用左连接啊.
select 性别, sum(开户) as 开户数量 from
(select y.性别, iif(k.user_id is not null, 1, 0) as 开户 from 用户 y left join 银行开户 k on y.user_id=k.user_id)
group by 性别

测试通过

select distinct sex,
isnull((
select count(*) from 银行表
left join
用户表
on
用户表.id = 银行表.use_id
where 用户表.sex=main_用户表.sex
group by 用户表.sex
),
0) as count
from 用户表 main_用户表

select 性别,(select count(1) from 银行开户表 where user_id in (select user_id from 用户表 where 性别=a.性别)) as 开户数量 from (select distinct 性别 from 用户表) a

select case s_info when '男' then count(*) when '女' then count(*) else 0 end from sinfo group by 性别

关键代码在这,其他的表关联你一定没问题

select user_sex,sum(isnull(bank_id)+1) from 用户表 left join 银行开户表 on 用户表.user_id = 银行开户表.user_id group by user_sex