日期:2014-05-19  浏览次数:20555 次

询问是否有SQL语句或存储过程能实现我的想法
内容如下:

编号     数据编号     名称       内容
1             001             姓名       张三
2             001             性别       男
3             001             年龄       17

就是,根据数据编号,得知这三条数据属于同一个数据,是否可以用SQL语句,查询出来,并且组成一条查询结果返回,即返回

编号     姓名       性别         年龄
1           张三       男             17

是否可以查询出前3年数据并组成上面1条数据返回给dataset数据集???谢谢,盼复

------解决方案--------------------
--如果名稱是固定的
Select
数据编号,
Max(Case 名称 When '姓名 ' Then 内容 Else ' ' End) As 姓名,
Max(Case 名称 When '性别 ' Then 内容 Else ' ' End) As 性别,
Max(Case 名称 When '年龄 ' Then 内容 Else ' ' End) As 年龄
From

Group By
数据编号
------解决方案--------------------
create table tab(编号 int,数据编号 varchar(10),名称 varchar(10),内容 varchar(10))
insert tab
select 1 , '001 ' , '姓名 ', '张三 '
union select 2 , '001 ' , '性别 ', '男 '
union select 3 , '001 ' , '年龄 ', '17 '


declare @str varchar(8000)
set @str= 'select 编号=cast(数据编号 as int) '
select @str=@str+ ', '+名称+ '=max(case when 内容= ' ' '+内容+ ' ' ' then 内容 else ' ' ' ' end) '
from tab
group by 数据编号,名称,内容

exec(@str+ ' From tab Group By 数据编号 ')

drop table tab