如何将记录转为字段名??

aminic 2003-09-21 09:18:01
如有一表如下
a b
姓名 李
性别 男
年龄 20

如何转为

姓名 性别 年龄
李 男 20


请各位指点...
...全文
85 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
aminic 2003-09-23
  • 打赏
  • 举报
回复
其实我要做的过程是这样的:

接收传值条件
根据条件组合代码表与原始表
然后就是行列转换
cheny1234 2003-09-22
  • 打赏
  • 举报
回复
用ACCESS的交叉表查询比较方便。
aminic 2003-09-22
  • 打赏
  • 举报
回复
我只是这样举一个例子啊目的就是行列转换
aminic 2003-09-21
  • 打赏
  • 举报
回复
怎么没人想到没人回答难道这个问题太难了?
DigJim 2003-09-21
  • 打赏
  • 举报
回复
我觉得是你的数据库结构设计的有问题!

你可以单独设计一张表存放:姓名、性别、年龄,甚至政治面貌、民族、出生日期
在这张表中存放资料!

表A
ID COL
1 姓名
2 性别
3 年龄
4 政治面貌
5 .....

表B
ID A_ID COL
1 1 张
1 2 男
1 3 20
2 1 李
2 2 挖土
2 3 28
1 4 党员
2 4 群众

这样存放数据才是合理的!
aminic 2003-09-21
  • 打赏
  • 举报
回复
我的意思是,记录是不断增加的但不会有重复的,比如已经有姓名了那么就不会再出现姓名这条记录了如果增加记录的话只会增加不同记录比如政治面貌了民族了出生日期了,是这样的如果还是用你写的这些语句的话,那么,以后每次增加一条记录就要增加相应的语句,这样以后维护很不方便的
mjhnet 2003-09-21
  • 打赏
  • 举报
回复
必须加max,不然会得到三条记录的
happy_0325 2003-09-21
  • 打赏
  • 举报
回复
关注动态的方法!
zarge 2003-09-21
  • 打赏
  • 举报
回复
测试数据:

create table #abc (id int, a varchar(8), b varchar(8))
drop table #abc

insert into #abc values(1, '姓名', '李')
insert into #abc values(1, '性别', '男')
insert into #abc values(1, '年龄', '20')

insert into #abc values(2, '姓名', '张')
insert into #abc values(2, '性别', '女')
insert into #abc values(2, '年龄', '23')

select max(case a when '姓名' then b else '' end) as 姓名,
max(case a when '性别' then b else '' end) as 性别,
max(case a when '年龄' then b else 0 end) as 年龄
from #abc
group by id

返回

姓名 性别 年龄
-------- -------- -----------
李 男 20
张 女 23
aminic 2003-09-21
  • 打赏
  • 举报
回复
能不能换种方法,这样做的话太死了能动态的话最好了,我再想想
zarge 2003-09-21
  • 打赏
  • 举报
回复
to aminic(aminic)

如果再有同一个人的记录,修改SQL语句

如果再有不同人的记录,要修改你的表结构,加个用户ID字段,在查询时加上group by

select max(case a when '姓名' then b else '' end) as 姓名,
max(case a when '性别' then b else '' end) as 性别,
max(case a when '年龄' then b else 0 end) as 年龄
from 表
group by id
welyngj 2003-09-21
  • 打赏
  • 举报
回复
从帮助中知道
MAX 忽略任何空值。
对于字符列,MAX 查找排序序列的最大值
zarge 2003-09-21
  • 打赏
  • 举报
回复
不用max函数,返回

姓名 性别 年龄
-------- -------- --------
李 NULL NULL
NULL 男 NULL
NULL NULL 20

加上max,返回

姓名 性别 年龄
-------- -------- --------
李 男 20
aminic 2003-09-21
  • 打赏
  • 举报
回复
我举的这个表是很短,但是记录是会增加的啊如何再有其他的记录怎能么办?
aminic 2003-09-21
  • 打赏
  • 举报
回复
对啊!讲讲啦!谢谢!!
welyngj 2003-09-21
  • 打赏
  • 举报
回复
请问zarge(鲨至)为何要加上max ,不加将得到
李 NULL NULL
NULL 男 NULL
NULL NULL 20
的结果?
zarge 2003-09-21
  • 打赏
  • 举报
回复
select max(case a when '姓名' then b else '' end) as 姓名,
max(case a when '性别' then b else '' end) as 性别,
max(case a when '年龄' then b else 0 end) as 年龄
from 表

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧