SELECT [show_id]
,[year]
,[n1]
,[n2]
,[n3]
,[n4]
,[n5]
FROM [datapass_db].[dbo].[test]
1:SQL2005中的列转行.
SELECT [show_id], mon, SubTotal
FROM [datapass_db].[dbo].[test] UNPIVOT
(SubTotal FOR mon IN
([n1], [n2], [n3],[n4],[n5])
)AS unpvt;
2:SQL 2000 中的列转行
declare @tmpsql varchar(8000)
declare @sql varchar(8000)
select @tmpsql = ''
select @tmpsql = @tmpsql + ' UNION ALL SELECT '
+' show_id,'
+' year ,'
+name +' as mon'
+' from dbo.test'
from syscolumns
where object_id('dbo.test')=id and left(name,1) = 'n'
select @tmpsql=stuff(@tmpsql,1,11,'')
select @sql = 'select * from ('+@tmpsql+') t where t.mon>0'
print @sql
exec (@sql)
付送:
1:查找,已知列的表名.
select syscolumns.name,sysobjects.name from syscolumns , sysobjects
where syscolumns.id = sysobjects.id and syscolumns.name='要查的列名'
2:找出在两个数据库中表名称在彼此数据库中不存在的表名称,字段.
SELECT accdb.table_name AS accdb_table_name,
accdb.columns_name AS accdb_columns_name,
accdb1.table_name AS accdb1_table_name,
accdb1.columns_name AS accdb1_columns_name
FROM (SELECT Accdb.dbo.sysobjects.name AS table_name,
Accdb.dbo.syscolumns.name AS columns_name
FROM Accdb.dbo.syscolumns INNER JOIN
Accdb.dbo.sysobjects ON
Accdb.dbo.syscolumns.id = Accdb.dbo.sysobjects.id
WHERE (NOT (Accdb.dbo.syscolumns.name LIKE '@%')) AND
(Accdb.dbo.sysobjects.xtype = 'U')) accdb LEFT OUTER JOIN
(SELECT sysobjects.name AS table_name,
syscolumns.name AS columns_name
FROM syscolumns INNER JOIN
sysobjects ON syscolumns.id = sysobjects.id
WHERE (NOT (syscolumns.name LIKE '@%')) AND (sysobjects.xtype = 'U'))
accdb1 ON accdb.columns_name = accdb1.columns_name AND
accdb.table_name = accdb1.table_name
WHERE (accdb1.table_name IS NULL) OR
(accdb1.columns_name IS NULL) order by accdb.table_name,accdb.columns_name
其中accdb1为旧库,accdb为新库。
不只能查出表不同, 还包括字段的
分享到:
相关推荐
在SQL Server 2005中,我们经常遇到这样的需求:需要将数据库中的多行数据转换为多列显示,这通常被称为“行转列”或“行列互换”。这种操作在数据分析、报表制作或者简化数据显示时非常有用。本文将详细讲解如何在...
根据提供的标题、描述、标签及部分内容,本文将详细介绍SQL中实现列转行及行转列通用存储过程的具体方法,特别是针对Microsoft SQL Server版本的应用场景。 ### 标题解析:SQL列转行及行转列的通用存储过程 该标题...
### SQL语句实现表的行列转换,行转列,列转行 在处理数据库时,我们经常需要对数据进行各种变换以适应不同的分析需求。其中,“行列转换”就是一种非常实用的功能,它可以帮助我们将表中的行数据转换为列数据,...
在SQL Server中,"行转列"是一种常见的数据操作,它可以帮助我们把表格中的多行数据转换成一列,或者将某一列的数据转换为多列显示。这种技术在数据分析、报表制作以及信息展示中非常实用。本文将详细介绍SQL Server...
通过这种方式,我们可以利用SQL的动态行转列功能,灵活地处理各种数据结构,特别是在数据报表和分析场景中。记住,尽管这种方法强大,但也要注意性能问题,因为动态SQL可能会增加查询的复杂性,影响数据库的执行效率...
MySQL 提供了两种转换数据布局的方法:行转列(Pivot)和列转行(Unpivot),这在处理复杂的数据汇总和展示时非常有用。本文将深入探讨这两种转换方法,并提供具体的 SQL 语句示例,以及创建示例表结构的 SQL 代码。...
### SQL利用UNION ALL进行行转列方法解析 在数据库操作中,经常需要对数据进行各种转换以满足不同的业务需求。其中,“行转列”(Pivot)是一种常见的数据转换方式,它能够将数据表中的某列或多列值转换为多列的...
### SqlServer行转列 ...综上所述,SQL Server中的行转列功能提供了强大的数据重塑能力,能够帮助用户更有效地处理和分析数据。通过掌握正确的使用方法和注意事项,可以在实际工作中大大提高工作效率。
在SQL Server 2000中,由于缺乏直接支持行转列的内置函数或语句,通常需要通过动态SQL来实现。具体步骤如下: 1. **构建动态SQL语句**:首先,需要查询出所有需要被转换为列的值,并基于这些值构造动态SQL。 2. **...
T-SQL(Transact-SQL)是微软SQL Server所使用的扩展SQL语言,它提供了丰富的数据处理功能,包括行转列。在SQL Server中,有两种主要的方法可以实现这一转换: 1. 使用CASE语句: CASE语句是SQL中一个非常强大的...
这种转换技术被称为“行转列”或“透视”(Pivot),而在SQL语言中实现这一功能,最常用的方法便是利用PIVOT函数。本文将深入探讨如何使用SQL中的PIVOT函数将表格数据由行格式转换为列格式,并通过具体案例进行详细...
总的来说,SQL中的行转列技术是数据处理和分析的重要工具,理解和掌握这些方法能帮助我们更好地对数据进行整理和展示。实际应用中,应根据具体数据库系统和需求选择合适的方法。在进行行转列操作时,要注意数据量和...
在SQL Server 2005中,我们经常需要将数据从列的形式转换为行的形式,这一操作在数据库处理中被称为“行列转换”。这种转换对于数据分析、报表制作或数据展示非常有用。本文将详细介绍两种实现SQL Server 2005中列...
标题与描述均提到“SQL行转列解决方案”,这主要指的是在SQL中将数据表...总之,行转列是SQL数据处理中的一项重要技能,通过熟练掌握`CASE`语句、动态SQL以及聚合函数的使用,可以高效地满足各类数据整理和分析的需求。
根据题目提供的信息,“sql行转列动态与静态”这一主题介绍了三种实现行转列的方法:静态方式、动态方式以及动态生成列的方式。接下来,我们将详细介绍这三种方法及其应用场景。 ### 一、静态方式 静态方式是最...
在提供的"行转列.sql"文件中,可能包含了具体的行转列操作示例。通过分析这个文件,你可以更直观地学习如何在SQL Server中进行行转列操作。请打开文件查看具体代码,并根据实际情况调整和使用。
在SQL Server 2005中,处理数据时有时会遇到需要将表格的列转换为行的需求,这种操作被称为“行列转换”。SQL Server 提供了一些方法来实现这一目标,包括使用UNPIVOT操作和创建自定义存储过程。在本案例中,我们将...