如何在MS SQL 数据库中将几列合并成一行

如何在MS SQL 数据库中将几列合并成一行,第1张

declare @tt table(A列 int, B列 int, C列 int, D列 varchar(100), E列 varchar(100) , F列 varchar(100))

insert into @tt values (1, 1, 1, '耐酸汗渍牢度(面料)','色泽变化', NULL)

insert into @tt values (1, 2, 1, '耐酸汗渍色牢度(面料)','涤布沾色', NULL)

insert into @tt values (2, 1, 1, '耐碱汗渍色牢度(里料)','棉布沾色', NULL)

insert into @tt values (2, 2, 1, '耐碱汗渍色牢度(里料)','色泽变化', NULL)

select A列,substring(D列,2,len(D列)) D列 from 

(

select t1.A列 as A列,'A'+t2.D列 as D列 from @tt t1 left join @tt t2

on t1.A列 = t2.A列 group by t1.A列,t2.D列

union all

select t1.A列 as A列,'B'+t2.E列 from @tt t1 left join @tt t2

on t1.A列 = t2.A列  group by t1.A列,t2.E列

--union all

--select  t1.A列 as A列,'C'+t2.F列 from @tt t1 left join @tt t2

--on t1.A列 = t2.A列  group by t1.A列,t2.F列

) tt group by  A列,D列

新建个表

写个小例子吧

新建表 新A(ID,名字,性别)

旧表 C(id,name)

旧表 D(C_id,sex)

你的旧表D和旧表C是关联的

倒的时候就这样执行

insert into 表A (姓名) select [name] from C INNER JOIN D on [C].[id]=[D].[C_id]

这样就把说有记录添加到一个表里

然后 如果不想要这样的表结构 还想要两个连表的结构

那就 再建两个表

E和F 结构分别和C,D 相同 注意 新表E表的ID不是自动增长

insert into [E] (id,name) select [ID],[姓名] from A

执行完后 在执行一个

insert into [F] (E_ID,sex) select [ID],[性别] from A

最后工作就是把 E表里的ID字段类型修改成自动增长类型

有点麻烦哈 不过 我没想到别的简单的办法

例如表中的字段分别为

f1,f2,f3, h, f5

1.先建一个tc 表,如下:

select b.f1, b.f2, b.f3, b.h + '_1' as h, b.f5 into tc form b where b.h

in ( select a.h from a)

2.将 a 表的数据放到 hebing 表

select * into hebing from ta

3.将 tc 表的数据放到 hebing 表

insert into hebing select * from tc

4.将 b 表的数据放到 hebing 表

insert into hebing select * from b where b.h not in ( select a.h from a)

----------

随手写的,可能代码或有些错,但原理就是这样,另外,效率也有些低。我用了not in


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6676448.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存