将sql表中的数据多行动态的转为多列
来源:互联网 发布:金蝶软件价格表 编辑:程序博客网 时间:2024/06/04 17:40
先把贴图贴上
这是表中的数据
(1)这是第一种效果,不知道能不能满足你的需求
(2)如果以上效果不满足,那你可能需要的是第二种了
好了,效果看过了,代码贴上
(1)这是第一种效果的代码
SELECT Name,
(SELECT Interest+'--' FROM Table_4 WHERE Name=A.Name FOR XML PATH('')) AS List FROM Table_4 A
GROUP BY Name
(2)这是第二中效果的代码
declare @c int,@i int
declare @sql nvarchar(800)
declare @cur cursor
declare @Name nvarchar(50)
declare @Interest nvarchar(50)
set @i=1
set @c=( select top(1) C from (select COUNT(1) as C from Table_4 group by Name) as tb1 order by C desc)
--动态创建一张临时表
set @sql = 'create table tmp(Name nvarchar(50) '
while(@i<=@c)
begin
set @sql = @sql + ' ,Interest'+CAST(@i as varchar(2))+' nvarchar(50)'
set @i = @i+1
end
set @sql =@sql+ ' ,num int )'
--print(@sql)
exec(@sql)
--通过游标动态将多行转为多列
set @cur = cursor for select Name,Interest from table_4
open @cur
fetch next from @cur into @Name,@Interest
while(@@FETCH_STATUS=0)
begin
set @c = (select COUNT(1) from tmp where Name=@Name)
if @c=0 --insert value
begin
insert into tmp(Name,Interest1,num) values(@Name,@Interest,1)
end
else
begin
set @i = (select num from tmp where Name=@Name)+1
set @sql='update tmp set Interest'+cast(@i as varchar(10))+' = ^$^'+@Interest+'^$^ , num='+cast(@i as varchar(10))+' where Name=^$^'+@Name+'^$^'
set @sql = (select replace(@sql,'^$^',''''))
exec(@sql)
end
fetch next from @cur into @Name,@Interest
end
select * from tmp
实现的代码已经提供,下面是建表的脚本
--创建表
CREATE TABLE [dbo].[Table_4](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Interest] [nvarchar](50) NOT NULL,
[State] [int] NULL,
CONSTRAINT [PK_Table_4] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
- 将sql表中的数据多行动态的转为多列
- 将数据库表中的数据转为sql中的insert语句
- SQL中如何将一个表中的某一列的数据复制到另一个表中的某一列里
- SQL将一行多列数据合并成 一列
- 将用逗号存储在列的一行转为无逗号的多行
- 一条sql语句(关于将一个表里的数据汇总,更新数据库中的另外一张表的列值
- SQL 将横向数据转为纵向记录
- 将 html 中的 table 转为数据对象。
- Sql 怎样将某个列转为行,实…
- sql将逗号分隔的字符串转为表Table
- 将access转为sql server的经历
- 怎样将SQL SERVER表里的数据插入到Access表的指定列中?
- 将A表数据更新到B表相关列的SQL语句
- 将同一张表的某列字段值全部添加到另一列字段中的sql语句
- 使用一句 sql 实现将一张表中的某一列的值复制到另一列中。
- 【SQL】——将表中的自增列的标识修改成 n
- 【SQL】——将表中的自增列的标识修改成 n
- 将一张表中的数据作为列名的存储过程
- [正能量系列]失业的程序员(一)
- Hibernate的学习
- 由NT Service中调用SendInput模拟键盘鼠标事件了解到的
- 路由(Routing)——ZigBee协议栈Z-Stack开发指南
- java 3des des
- 将sql表中的数据多行动态的转为多列
- ば、たら、なら、と区别
- [gotoac]数论公式
- CSS基本语法的总结
- Pólya定理初探
- Linux音频编程指南
- 路由器的登陆界面登陆过慢的原因
- 老子的软件之道 - 道篇 36 治理矛盾
- 解决Vista或windows7上通过远程桌面控制服务器速度比较慢