如何用SQL语句把表的字段的值变成表的字段?
例如:
表W:
姓名 部门 //两个字段
张三 部门一//字段的值
李四 部门二
要求用SQL语句得出如下结果:
姓名 部门一 部门二 //字段
张三 是
李四 是
问题点数:50、回复次数:8Top
1 楼talantlee(小刀(bluedagger.cn))回复于 2005-04-18 21:41:51 得分 15
經典的行列轉換問題
----這裡的表為tablea(name,a,b) ---以a開始到b進行行列轉換
declare @a varchar(1000)
set @a='select name '
select @a=@a+',sum(case when a='''+a+''' then b end)'+' as '+ a ----這裡sum改為min或max結果一樣
from (select distinct a from TableA)T1
set @a=@a+' from TableA group by name'
--exec(@a)
print (@a)
select name ,sum(case when a='andy ' then b end) as andy ,sum(case when a='fenlam' then b end) as fenlam from TableA group by name
Top
2 楼paoluo(一天到晚游泳的鱼)回复于 2005-04-18 21:44:43 得分 20
--建立测试环境
Create table W
(姓名 Nvarchar(10),
部门 Nvarchar(10))
GO
--插入数据
Insert W Values(N'张三', N'部门一')
Insert W Values(N'李四', N'部门二')
GO
--测试
Select
姓名,
(Case When A.部门=N'部门一' Then N'是' Else Null End )As 部门一,
(Case When A.部门=N'部门二' Then N'是' Else Null End )As 部门二
from W A
--删除测试环境
Drop table W
GO
--结果
/*
姓名 部门一 部门二
张三 是 NULL
李四 NULL 是
*/
Top
3 楼funsuzhou(☆【处变不惊】☆)回复于 2005-04-18 22:13:15 得分 0
楼上,为什么要加N?不加也可以啊Top
4 楼funsuzhou(☆【处变不惊】☆)回复于 2005-04-18 22:14:25 得分 0
这样也可以啊,但请赐教
--建立测试环境
Create table W
(姓名 Nvarchar(10),
部门 Nvarchar(10))
GO
--插入数据
Insert W Values('张三', '部门一')
Insert W Values('李四', '部门二')
GO
--测试
Select
姓名,
(Case When A.部门='部门一' Then '是' Else Null End )As 部门一,
(Case When A.部门='部门二' Then '是' Else Null End )As 部门二
from W A
--删除测试环境
Drop table W
GOTop
5 楼hawk_js(鹰)回复于 2005-04-19 08:57:50 得分 0
Select
姓名,
(Case When A.部门='部门一' Then '是' Else Null End )As 部门一,
(Case When A.部门='部门二' Then '是' Else Null End )As 部门二
from W A
Top
6 楼steelmqb1(小N)回复于 2005-04-19 10:42:06 得分 0
很好a,upTop
7 楼xluzhong(Ralph)回复于 2005-04-19 11:37:45 得分 15
http://blog.csdn.net/xluzhong/articles/349046.aspxTop
8 楼sgucxc0(ben)回复于 2005-04-23 11:48:14 得分 0
谢谢各位的点解!Top




