sql2000和sql2005的行轉列處理方法
2007-10-26 09:24
原表結構
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為新庫。
不只能查出表不同, 還包括欄位的
Sql2000和Sql2005共存安裝詳細過程
在安裝了sql2000的基礎上安裝sql2005的詳細過程 sql2005版本 sql2005開發版,兩張cd的那種 作業系統 window 2003 server 假設您的電腦已安裝了sql2000,下面開始安裝sql2005。一 執行光碟1 跳過 準備 步驟,直接進行 伺服器元件 工具 聯機叢書...
SQL2005的資料轉成SQL2000
直接restore或附加應該是不行的,用指令碼 導資料肯定沒有問題。2005轉到2000的步驟 1.生成for 2000版本的資料庫指令碼 2005 的manger studio 開啟 物件資源管理器 沒有的話按f8 連線到你的例項 右鍵要轉到2000的庫 任務 生成指令碼 在 指令碼嚮導 的 選擇...
SQL2000和SQL2005的行轉列處理方法
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...