首页 新闻 搜索 专区 学院

数据行转列的问题

0
悬赏园豆:20 [已关闭问题]

tbVication (empName varchar(20),leave1 int,leave2 int ,leave3 int ).数据如下

empName  leave1   leave2   leave3

nana          80           80          80   

现在我的需求是 比如我只要nana  这个empName的数据,但是这样显示

empName  nana

leave1     80

leave2     80

leave3     80

请问这样的查询语句应该怎么写呢 ?

天堂口的主页 天堂口 | 小虾三级 | 园豆:514
提问于:2009-11-19 13:16
< >
分享
其他回答(2)
0

http://www.cnblogs.com/peaceli/archive/2009/09/08/1561113.html

这上面讲解很详细

persialee | 园豆:3217 (老鸟四级) | 2009-11-19 13:37
0

你这个问题既不属于行转列,也不属于列转行。

当然不排除能够做出你这个结果,但是觉得你本身的表结构设计就有问题。

如果你的leave后面因为需求变化,多加了一个,你还得改表结构。

 

declare @t table (empName varchar(20),leave1 int,leave2 int ,leave3 int )

insert @t
select 'nana', 80 , 80, 80

select 'empname',empname from @t
union all
select 'leave1',convert(varchar(10),leave1) from @t
union all
select 'leave2',convert(varchar(10),leave2) from @t
union all
select 'leave3',convert(varchar(10),leave3) from @t

这个是我唯一能想到的方法。

 

 

清海扬波 | 园豆:786 (小虾三级) | 2009-11-19 15:37
0

名字那一行自己写吧,我只写行转列的

SELECT s,sValue 

FROM

(

SELECT empName,leave1,leave2,leave3 FROM tbVication

)p

UNPIVOT

(

sValue FOR s IN (leave1,leave2,leave3)

)

AS unpvt

窃马贼 | 园豆:145 (初学一级) | 2009-11-20 17:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册