今天遇到面试 遇到一个题目如下:
一个表A
ID CF
001 人口
002 车辆
001 人口
002 车辆
001 人口
编写一个sql语句实现如下结果
ID 人口 车辆
001 3 0
002 0 2
一个表A
ID CF
001 人口
002 车辆
001 人口
002 车辆
001 人口
编写一个sql语句实现如下结果
ID 人口 车辆
001 3 0
002 0 2
------------------------------
解决方法------------------------
SQL> create table yang (id number,name varchar2(10));
表已创建。
SQL> insert into yang values (001,'人口');
已创建 1 行。
SQL> insert into yang values (001,'人口');
已创建 1 行。
SQL> insert into yang values (001,'人口');
已创建 1 行。
SQL> insert into yang values (002,'车辆');
已创建 1 行。
SQL> insert into yang values (002,'车辆');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select
2 id,
3 count(decode(name,'人口',name)) as "人口",
4 count(decode(name,'车辆',name)) as "车辆"
5 from yang group by id;
表已创建。
SQL> insert into yang values (001,'人口');
已创建 1 行。
SQL> insert into yang values (001,'人口');
已创建 1 行。
SQL> insert into yang values (001,'人口');
已创建 1 行。
SQL> insert into yang values (002,'车辆');
已创建 1 行。
SQL> insert into yang values (002,'车辆');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select
2 id,
3 count(decode(name,'人口',name)) as "人口",
4 count(decode(name,'车辆',name)) as "车辆"
5 from yang group by id;
ID 人口 车辆
---------- ---------- ----------
1 3 0
2 0 2
---------- ---------- ----------
1 3 0
2 0 2