
正文
sqlserver中两张表各行数据叠加,sql把两张表字段合在一张表中
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
求助各位大神,sql server两表间一对多的关系,如何数据整合到一行数据中,问题举例在问题补充中。谢谢..
SQL SERVER 2005+实现行列互转可以用PIVOT和UNPIVOT
这个是实现:
SELECT * FROM (
SELECT sc.student_id,st.name,curse_name,score FROM student st JOIN score sc ON st.id=sc.student_id) AS T
PIVOT(SUM(score) FOR curse_name IN (语文,数学)) AS P
不过这不是最完整的解决方案,假设你添加多了几门课程,例如英语,化学,生物之类的,就要在原来的语句里添加相应的项,所以要用动态SQL来实现,方法就是先把score表里的全部课程GROUP BY 出来,生成字符串形式(如‘语文,数学,英语,化学,生物’),用逗号隔开,插入到上面语句的PIVOT表达式的IN中,实现如下:
DECLARE @sql NVARCHAR(MAX)
DECLARE @curseList NVARCHAR(200)
SET @curseList=STUFF(
(SELECT ','+curse_name FROM score GROUP BY curse_name FOR XML PATH('')),1,1,'')
SET @sql='
SELECT * FROM (
SELECT student_id,name AS sdudent_name,curse_name,score FROM student st JOIN score sc ON st.id=sc.student_id) AS T
PIVOT(SUM(score) FOR curse_name IN ('+@curseList+')) AS P'
EXEC(@sql)
相关问答
Q1: SQL 两张表合并 (两张表的列都相同)
可以参考下面的方法:
1、第一种,用一张临时表,把所有数据都放在一张表里
INSERT INTO QunList SELECT * FROM QunList89,90,91,92;
再在QunList中查询
2、第二种,用 UNION ALL方式查询
SELECT * FROM QunList89
UNION ALL
SELECT * FROM QunList90;
扩展资料:
SQL参考语句
删除表
drop table tabname--这是将表连同表中信息一起删除但是日志文件中会有记录
删除信息
delete from table_name-这是将表中信息删除但是会保留这个表
增加列
Alter table table_name add column_name column_type [default 默认值]--在表中增加一列,[]内的内容为可选项
参考资料来源:百度百科-结构化查询语言
参考资料来源:百度百科-SQL语句大全
Q2: sql如何把两张表的数据合并起来?
1.两个不同的表进行查询,需要把结果合并,
比如table1的列为 id, user_id, type_id,pro_id;
table2的列为 id,user_id,collect_id;分别如下图所示
table1:
table2:
2.将两个表的查询结果合并到一起的查询语句为
select *, null as collect_id from table1 where user_id = 527
union
select id,user_id,null as type_id,null as pro_id, collect_id from table2 where user_id = 527;
3.结果为:
总结:其实就是把对应的列补充到没有该列的表中,在例子中就是把collect_id补充到table1中,
把type_id,pro_id补充到table2中。
Q3: sql如何将两个表里的数据同步?
使用 merge into。
使用 merge into,Merge是在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。根据与源表联接的结果,对目标表执行插入、更新或删除操作。
例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。通过这个描述,我们 可以看出Merge是关于对于两个表之间的数据进行操作的。
可以直接 select * from 表,然后一个列一个列记录下),通过以上方法直接复制所有字段名,方便以下运用。
得出相关表的所有列名后,下面就是运用到merge into 里面去了。快速运用表字段进行粘贴到merge 里面的方法是:将所有字段复制粘贴到excel里面,然后用EXCEL 符号合并增加字符号,如图:
运行以上代码成功后,F_Test 库里面的biitm01t 表就跟正式库里面 的biitm01t 表的数据一样了。
Q4: 在SQLserver中 怎样将两个库中同样结构的两个表的数据进行合并
分类: 电脑/网络 程序设计 其他编程语言
问题描述:
在SQLserver中 怎样将两个库中同样结构的两个表的数据进行合并
数据有可能存在重复
表结构完全相同
解析:
可以将两个表中的数据提出来(重复的过滤)写入一个临时表中,清空这两个表,再将临时表的数据回写入这两个表里面。为防出错,请先备份数据库再操作。
如:
第一步:select * from 数据库名1..表名1 into #临时表名
第二步:insert into #临时表名 (字段名1,字段名2……) (select a.字段名1,a.字段名2…… from 数据库名2..表名2 a,数据库名1..表名1 b where 数据库名2..表名2.主键字段名数据名1..表名1.主键字段名 )
第三步:delete from 数据库名1..表名1
第四步:delete from 数据库名2..表名2
第五步:insert into 数据库名1..表名1 from #临时表
第六步:insert into 数据库名2..表名2 from #临时表
第七步:drop table #临时表
注:如果两个表中没有主键,你只有在第二条语句中where 项中一个字段一个字段地添加条件判断了。
sqlserver中两张表各行数据叠加的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于sql把两张表字段合在一张表中、sqlserver中两张表各行数据叠加的信息别忘了在本站进行查找喔。








