如下是性别表 id value
1 男
2 女
3 春哥如下是数据表name sex
小明 男
小丽 女
小春 春哥
小王 男
小红 女根据以上表,我要以下结果 男 女 春哥
2 2 1注意:没有的显示为0,而不是不显示
关键在于通用性,因为以后可能还要拓展,我的意思是 性别表可能还要加性别,那时候你的sql语句不改还能正确 。求解~!
1 男
2 女
3 春哥如下是数据表name sex
小明 男
小丽 女
小春 春哥
小王 男
小红 女根据以上表,我要以下结果 男 女 春哥
2 2 1注意:没有的显示为0,而不是不显示
关键在于通用性,因为以后可能还要拓展,我的意思是 性别表可能还要加性别,那时候你的sql语句不改还能正确 。求解~!
版主的帖子
SELECT 1 id, '男' value FROM dual UNION ALL
SELECT 2,'女' FROM dual UNION ALL
SELECT 3,'春哥' FROM dual
),
数据表 AS(
SELECT '小明' name,'男' sex FROM dual UNION ALL
SELECT '小丽', '女' FROM dual UNION ALL
SELECT '小春', '春哥' FROM dual UNION ALL
SELECT '小王', '男' FROM dual UNION ALL
SELECT '小红', '女' FROM dual
)
SELECT
Sum(Decode(Nvl(b.sex,0),'男',1,0)) 男,
Sum(Decode(Nvl(b.sex,0),'女',1,0)) 女,
Sum(Decode(Nvl(b.sex,0),'春哥',1,0)) 春哥
FROM 性别表 a left join 数据表 b
ON a.Value=b.sex--
男 女 春哥
-----------------
2 2 1
力挺狂浪
2 select 1 id, '男' value from dual union all
3 select 2,'女' from dual union all
4 select 3,'春哥' from dual
5 ),
6 dt as(
7 select '小明' name,'男' sex from dual union all
8 select '小丽', '女' from dual union all
9 select '小春', '春哥' from dual union all
10 select '小王', '男' from dual union all
11 select '小红', '女' from dual
12 )
13 select sum(decode(b.sex,'男',1,0)) "男",
14 sum(decode(b.sex,'女',1,0)) "女",
15 sum(decode(b.sex,'春哥',1,0)) "春哥"
16 from xb a,dt b
17 where a.value=b.sex
18 /
男 女 春哥
---------- ---------- ----------
2 2 1