| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 873 人关注过本帖
标题:分享行列转换
只看楼主 加入收藏
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
 问题点数:0 回复次数:3 
分享行列转换

table1
====================================
c_b c_c1 c_c2
--------------------------------
A a<>k1 a<>k3
B b<>k1 c<>k1
A a<>k1 e<>k2
B d<>k3 d<>k2
=====================================
table_2
c_A c_B c_1 c_2
---------- ---------- ---------- ----------
k1 A a
k1 B b c
k2 A e
k2 B d
k3 A a
k3 B d
如何由table1生成table2???

实现

if object_id('shiyan') is not null
drop table shiyan
go
create table shiyan(col1 varchar(10),col2 varchar(10),col3 varchar(10))
insert into shiyan select 'A','a<>k1','a<>k3'
insert into shiyan select 'B','b<>k1','c<>k1'
insert into shiyan select 'A','a<>k1','e<>k2'
insert into shiyan select 'B','d<>k3','d<>k2'

--以上是生成表

declare @s table(col1 varchar(10),col2 varchar(10),col3 varchar(10),id int) --定义表变量,增加id列便于行列转换
declare @i int
set @i=1
while @i<=(select count(1) from shiyan)
begin
set nocount on
insert into @s select col1,right(col2,2),left(col2,1),1 as id from shiyan
insert into @s select col1,right(col3,2),left(col3,1),2 as id from shiyan
set @i=@i+1
end
set rowcount 0
select col2 as c_A,col1 as c_B ,max(case id when 1 then col3 else ' ' end) as c_1,max(case id when 2 then col3 else ' ' end) as c_2 from @s group by col1,col2

结果
c_A c_B c_1 c_2
---------- ---------- ---------- ----------
k1 A a
k1 B b c
k2 A e
k2 B d
k3 A a
k3 B d

我想不到用一句实现的,如果大家能一句实现的话,希望贴出答案

[此贴子已经被作者于2007-2-11 23:18:27编辑过]

搜索更多相关主题的帖子: 行列 分享 
2007-02-11 23:14
accpfriend
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:167
专家分:102
注 册:2006-12-31
收藏
得分:0 

能问下,我没看明白,你的 table1 --> table2 是要干什么,有点晕
收藏,慢慢研究

2007-02-12 09:11
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 

set rowcount 0
你在这句后面加一句select * from @s
看看输出结果,然后和最后的table2比较,
我只是照着我自己的理解来写的,那人也没说要做什么


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-02-12 09:17
心中有剑
Rank: 2
等 级:新手上路
威 望:5
帖 子:611
专家分:0
注 册:2007-5-18
收藏
得分:0 
...用left right不好吧!
这样是固定的才可以,所以应该查找<>然后分开的吧!

2007-09-12 18:44
快速回复:分享行列转换
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.010892 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved