如何将数据库中的一列转换为多列

ahaqxjl 2008-05-12 11:15:03
现有数据如下:
COL001
-----------
【题 名】竞争战略的环境保护评价方法
【作 者】樊松林


【题 名】现代企业在信息高速公路环境中的变革
【作 者】董慧 刘厚嘉


【题 名】关于现阶段我国信息社会学研究任务的初步探索
【作 者】谢俊贵

【题 名】期刊作者的量化研究(续)
【作 者】王崇德

【题 名】关于情报学学科的名称
【作 者】刘植惠

【题 名】当代情报学分支学科群体环境机制作用的时空格局
【作 者】陈文勇 李蕾


我想将上面的数据变成如下格式
题名 作者
------------------------------------------------------------------------
竞争战略的环境保护评价方法 樊松林
现代企业在信息高速公路环境中的变革 董慧 刘厚嘉
关于现阶段我国信息社会学研究任务的初步探索 谢俊贵
期刊作者的量化研究(续) 王崇德
关于情报学学科的名称 刘植惠
当代情报学分支学科群体环境机制作用的时空格局 陈文勇 李蕾
请问应该如何用SQL实现,数据量很大,请各位帮帮忙,小弟已经搜索过相关信息并尝试了一天,还未成功,希望各位高手赐教
...全文
234 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahaqxjl 2008-05-12
  • 打赏
  • 举报
回复
多谢楼上,问题解决了
dawugui 2008-05-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ahaqxjl 的回复:]
刚才我试了一下,返回如下错误提示:
服务器: 消息 207,级别 16,状态 3,行 16
列名 'px' 无效。
麻烦楼上解释一下
[/Quote]
用2楼,一楼写成ID了.
ahaqxjl 2008-05-12
  • 打赏
  • 举报
回复
谢谢楼上的帮助,可是我的数据一共有1万条,那么SQL语句该怎么写,如何带行号导入?呵呵,麻烦帮小弟解决我的困惑
Limpire 2008-05-12
  • 打赏
  • 举报
回复
你带行号导入,就什么问题都解决了
Limpire 2008-05-12
  • 打赏
  • 举报
回复
--> 测试数据: #T
if object_id('tempdb.dbo.#T') is not null drop table #T
create table #T (COL001 varchar(60))
insert into #T
select '【题 名】竞争战略的环境保护评价方法' union all
select '【作 者】樊松林' union all
select '【题 名】现代企业在信息高速公路环境中的变革' union all
select '【作 者】董慧 刘厚嘉' union all
select '【题 名】关于现阶段我国信息社会学研究任务的初步探索' union all
select '【作 者】谢俊贵' union all
select '【题 名】期刊作者的量化研究(续)' union all
select '【作 者】王崇德' union all
select '【题 名】关于情报学学科的名称' union all
select '【作 者】刘植惠' union all
select '【题 名】当代情报学分支学科群体环境机制作用的时空格局' union all
select '【作 者】陈文勇 李蕾'
if object_id('tempdb.dbo.#') is not null drop table #
select id=identity(int,1,1),substring(COL001,6,100) as data into # from #T

select a.data as 提名, b.data as 作者 from # a join # b on a.id=b.id-1 where b.id%2=0
/*
提名 作者
------------------------------------------------------------ ------------------------------------------------------------
竞争战略的环境保护评价方法 樊松林
现代企业在信息高速公路环境中的变革 董慧 刘厚嘉
关于现阶段我国信息社会学研究任务的初步探索 谢俊贵
期刊作者的量化研究(续) 王崇德
关于情报学学科的名称 刘植惠
当代情报学分支学科群体环境机制作用的时空格局 陈文勇 李蕾
*/
ahaqxjl 2008-05-12
  • 打赏
  • 举报
回复
刚才我试了一下,返回如下错误提示:
服务器: 消息 207,级别 16,状态 3,行 16
列名 'px' 无效。
麻烦楼上解释一下
dawugui 2008-05-12
  • 打赏
  • 举报
回复
select * , px = identity(int,0,1) into tmp from tb
select
max(case px%2 when 0 then col001 else '' end) '题名',
max(case px%2 when 1 then col001 else '' end) '作者'
from tmp
group by px/2
dawugui 2008-05-12
  • 打赏
  • 举报
回复
select * , id = identity(int,0,1) into tmp from tb
select
max(case px%2 when 0 then col001 else '' end) '题名',
max(case px%2 when 1 then col001 else '' end) '作者'
from tmp
group by px/2

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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