求 SQL???抽出的数据 是 四列 我想转换成 两列 显示

我的表 是 四列 ( 学号 姓名  性别  出生年月日)

10001  张三   男    19870101  
10002  李四   女    19871101
10003  李娜   女    19870201
10004  石头   男    19870405
10005  吴广   女    19870501
10006  三国   男    19000609

抽出格式 转换成 (学好 姓名) 两列 显示  但是  性别  出生年月日 在 学好 姓名的 下一行显示
  
10001  张三   
男       19870101  
10002  李四  
女     19871101 
10003  李娜   
女    19870201
10004  石头   
男    19870405
10005  吴广   
女    19870501
10006  三国   
男    19000609 

作者: BIBIHAHA   发布时间: 2011-06-10

SQL code
select 学号,姓名
from
(
  select 学号 as px,ltrim(学号) as 学号,姓名 from tb
  union all
  select 学号,性别,ltrim(出生年月日) from tb
)
order by px

作者: FlySQL   发布时间: 2011-06-10

SQL code
select 学号,姓名
from
(
  select 学号 as px,学号,姓名 from tb
  union all
  select 学号,性别,出生年月日 from tb
)
order by px

作者: abcjun188   发布时间: 2011-06-10

SQL code
select 学号,姓名
from
(
  select 学号 as px1 
        ,'1' as px2
        ,ltrim(学号) as 学号
         ,姓名 
    from tb
  union all
  select 学号
         ,'2'
        ,性别
         ,ltrim(出生年月日)
    from tb
)
order by px1,px2

作者: jhone99   发布时间: 2011-06-10

引用 2 楼 abcjun188 的回复:
SQL code
select 学号,姓名
from
(
select 学号 as px,学号,姓名 from tb
union all
select 学号,性别,出生年月日 from tb
)
order by px

少了个别名,修改一下

SQL code
select 学号,姓名
from
(
  select 学号 as px,学号,姓名 from tb
  union all
  select 学号,性别,出生年月日 from tb
) c
order by px

作者: abcjun188   发布时间: 2011-06-10

借用1楼的改一下,排序更保险一些

作者: jhone99   发布时间: 2011-06-10

SQL code

declare @t table(cNo varchar(20), cName varchar(20), cSex varchar(2), dBirthday datetime)

insert into @t
select '10001','张三' ,'', '1987-01-01' union all
select '10002','李四' ,'', '1987-11-01' union all
select '10003','李娜' ,'', '1987-02-01' union all
select '10004','石头' ,'', '1987-04-05' union all
select '10005','吴广' ,'', '1987-05-01' union all
select '10006','三国' ,'', '1990-06-09'

select cNo, cName from (
select cNo Id, 0 iType, cNo, cName from @t
union all
select cNo Id, 1 iType, cSex, CONVERT(varchar(20), dBirthday, 120) from @t
) A
order by Id, iType


cNo                  cName
-------------------- --------------------
10001                张三
男                    1987-01-01 00:00:00
10002                李四
女                    1987-11-01 00:00:00
10003                李娜
女                    1987-02-01 00:00:00
10004                石头
男                    1987-04-05 00:00:00
10005                吴广
女                    1987-05-01 00:00:00
10006                三国
男                    1990-06-09 00:00:00

(12 行受影响)

作者: jxqn_liu   发布时间: 2011-06-10

学习了。。。

作者: shidanwo77   发布时间: 2011-06-10

+1
引用 1 楼 flysql 的回复:
SQL code
select 学号,姓名
from
(
select 学号 as px,ltrim(学号) as 学号,姓名 from tb
union all
select 学号,性别,ltrim(出生年月日) from tb
)
order by px

作者: chuanzhang5687   发布时间: 2011-06-10

SQL code
select 学号,姓名
from
(
  select 学号 as px,ltrim(学号) as 学号,姓名 from tb
  union all
  select 学号,性别,ltrim(出生年月日) from tb
) as tb1
order by px

作者: cd731107   发布时间: 2011-06-10

感谢 试验 试验

作者: BIBIHAHA   发布时间: 2011-06-10