sql server 查詢結果集 列 轉行 過程

2021-08-07 18:16:05 字數 2104 閱讀 7341

該方法,實現了,sql server 查詢出的結果集,先放入臨時表,通過臨時表,把列轉為行。

--1.把結果放入臨時表

select * into #tab from dbo.operatedefine 

--2.定義返回表變數

declare @rettable table(rowid int,[values] nvarchar(500),code nvarchar(100))

--3.呼叫轉換過程,把jtr

insert into @rettable

exec spmtconverttmpcolumntorows 'tempdb..#tab' 

--4.相關處理,

select * from @rettable

--5.刪除臨時表

drop table #tab

create proc dbo.spmtconverttmpcolumntorows( @passedtablename as nvarchar(255))

asbegin

--把臨時表中的列記錄轉為行記錄

--declare  @passedtablename as nvarchar(255) 

--set @passedtablename='tempdb..#tab'

--declare @actualtablename as nvarchar(255)

--select @actualtablename = quotename( table_name )

--from information_schema.tables

--where table_name = @passedtablename

declare @createtablesql nvarchar(max)

set  @createtablesql=' set nocount on declare  @ttt table( rowid int identity(1,1),'

select @createtablesql+=

stuff((

select   ', [' + name + '] nvarchar(500)'

from    tempdb.sys.columns 

where object_id = object_id(@passedtablename)

for xml path(''), type).value('.', 'nvarchar(max)'), 1, 2, '')

+')'+char(10)--+' insert into @ttt select * from #tab'--  +@passedtablename+'' 

select @createtablesql+=' insert into @ttt select * from ' +replace(@passedtablename,'tempdb..','') 

declare @sql nvarchar(max)

select @sql =--''-- 'declare @t table(  rowid int identity(1,1),value varchar(500),code varchar(500))

' select * from @ttt

unpivot (

value for code in (

' + stuff((

select   ', [' + name + ']'

from    tempdb.sys.columns 

where object_id = object_id(@passedtablename)

for xml path(''), type).value('.', 'nvarchar(max)'), 1, 2, '') + '

)) unpiv '

-- -- select * from @t

--print  @createtablesql

--print  @sql

declare @resultsql nvarchar(max);

set @resultsql=@createtablesql+@sql

exec (@resultsql)

----drop table #tab

end

SQLServer查詢篩選後的結果集

select row number over order by d.businessdate as 序號 接單日期 d.businessdate,合同號 d.docno,色號 d.proname,客戶 d.cusname,流水號 d.docno,料品 d.iteminfo itemname,工序 a...

拼接查詢sql中指定列的結果集

函式適用於 需要將指定查詢sql中的某列拼接成以指定字元分隔連線的字串。不足 因函式的返回值為varchar2,且通常拼接得到的字串會用於查詢sql 因用在sql中,不能大於varchar2的4000個字元限制 中,因此限制了返回長度小於等於4000 create or replace functi...

拼接查詢sql中指定列的結果集

函式適用於 需要將指定查詢sql中的某列拼接成以指定字元分隔連線的字串。不足 因函式的返回值為varchar2,且通常拼接得到的字串會用於查詢sql 因用在sql中,不能大於varchar2的4000個字元限制 中,因此限制了返回長度小於等於4000 create or replace functi...