数据库中有两个字段一个存ID,一个存姓名,根据姓将同一个姓的变成一列

来源:百度知道 编辑:UC知道 时间:2024/06/05 01:19:39

1 abc
2 bcd
3 acd
4 adc
5 bds
变成
abc bcd
acd bds
adc
这个问题是昨天面试的时候面试官问的,姓名一定是很多个并且姓也是很多他是把行变成了列 在sql server中是否有什么方法

select
case when substr(姓名,1,1)=a then 姓名 end 姓A的人,
case when substr(姓名,1,1)=b then 姓名 end 姓B的人
from table_name;

不过如果你的姓名字段有很多不同的姓,用上面的方法实现就不方便,对每个姓都要写一条case when 语句

SQL无法完成,因为SQL返回的列数是固定的,只有自己写程序来实现了。

如果要问我怎么写程序,请你回答你用的什么数据库、什么开发语言、什么操作系统。

你看看这样符合你的要求不?
oracle:
sql@kokooa>select * from test025;

ID NAME
---------- --------------------
1 abc
2 bcd
3 acd
4 adc
5 bds

sql@kokooa>select case when first='a' then name end as name1,
2 case when first='b' then name end as name2 from
3 (select id,substr(name,1,1) first,name from test025) test;

NAME1 NAME2
-------------------- --------------------
abc
bcd
acd
adc
bds

select t1.name,t2.name from tablename t1,tablename t2 where left(t1.name,1)