sqlserver2005 行列转换实现方法

2022-05-24 0 1,124

复制代码 代码如下:

–Create Company Table

Create Table Company

(

ComID varchar(50) primary key,

ComName nvarchar(50) not null,

ComNumber varchar(50) not null,

ComAddress nvarchar(200),

ComTele varchar(50)

)

–Create Product Table

Create Table Product

(

ProductID varchar(50) primary key,

ComID varchar(50) not null,

ProName nvarchar(200) not null,

ProNumber int not null

)

select * from product

–insert into table value

insert Company select(’58C0F3FD-7B98-4E74-A1A8-7B144FCB8707′,’CompanyOne’,’SH19991028′,’ShangHai’,’98765432112′)

union all select(‘768B2E84-0AAB-4653-8F5B-5EF6165204DB’,’CompanyTwo’,’SH19991028′,’ShangHai’,’98765432113′)

union all select(‘AAE86C36-C82B-421D-BC55-E72368B1DE00′,’CompanyThree’,’SH19991028′,’ShangHai’,’98765432114′)

union all select(‘C672B359-C800-47DE-9BB4-6D0FC614594C’,’CompanyFour’,’SH19991028′,’ShangHai’,’98765432115′)

union all select(‘FDBA8B3F-1851-4B73-9A20-A24AEF721AAE’,’CompanyFive’,’SH19991028′,’ShangHai’,’98765432116′)

insert Product sleect(‘1598A60B-FCFD-4269-864B-CB999E8EA5CA’,’AAE86C36-C82B-421D-BC55-E72368B1DE00′,’SqlServer2005′,500)

union all select(’19D7BF2F-79FD-414E-B648-F105D4AB1EBB’    ,’AAE86C36-C82B-421D-BC55-E72368B1DE00′,    ‘Office’,    400)

union all select(‘232B6109-C575-4316-A9BD-0C58F737BE7B’    ,’FDBA8B3F-1851-4B73-9A20-A24AEF721AAE’,    ‘SqlServer2005’    ,200)

union all select(‘4F30E12C-7654-40CC-8245-DF1C3453FBC5′    ,’768B2E84-0AAB-4653-8F5B-5EF6165204DB’,    ‘Office’,    400)

union all select(’54C6E4C2-1588-43DF-B22C-0697A1E27DB0′    ,’58C0F3FD-7B98-4E74-A1A8-7B144FCB8707′,    ‘Office’,    400)

union all select(‘551EB6CA-3619-4250-98A0-7231BB4C3D58′    ,’FDBA8B3F-1851-4B73-9A20-A24AEF721AAE’,    ‘SqlServer2000’,    100)

union all select(‘5BAD331C-B6E4-440E-AC54-52CE13166843′    ,’768B2E84-0AAB-4653-8F5B-5EF6165204DB’,    ‘SqlServer2005’,    1000)

union all select(‘5C039C53-2EE4-4D90-BA78-7A20CEC4935C’    ,’58C0F3FD-7B98-4E74-A1A8-7B144FCB8707′,    ‘Windows2000’,    200)

union all select(‘673A8683-CD03-40D2-9DB1-1ADA812016E2′    ,’58C0F3FD-7B98-4E74-A1A8-7B144FCB8707’,    ‘WindowsXP’,    100)

union all select(‘6B9F771B-46EA-4496-B1DA-F10CB53F6F62′    ,’C672B359-C800-47DE-9BB4-6D0FC614594C’,    ‘WindowsXP’,    100)

union all select(‘770089B1-A80A-4F48-8537-E15BD00A99E7′    ,’AAE86C36-C82B-421D-BC55-E72368B1DE00’,    ‘WindowsXP’,    100)

union all select(’92EED635-5C61-468A-B19D-01AAC112D8A3′    ,’FDBA8B3F-1851-4B73-9A20-A24AEF721AAE’,    ‘SysBase’,    100)

union all select(‘99195297-F7F0-4DCD-964E-CFB8A162B6D0′    ,’768B2E84-0AAB-4653-8F5B-5EF6165204DB’,    ‘Windows2008’,    300)

union all select(‘9EF017C1-F8F0-49BC-A7BD-4DFFB6EA8037′    ,’768B2E84-0AAB-4653-8F5B-5EF6165204DB’,    ‘Windows2000’,    200)

union all select(‘A31BCD44-7856-461F-A0FD-407DCA96E8A9′    ,’C672B359-C800-47DE-9BB4-6D0FC614594C’,    ‘SqlServer2005’,    100)

union all select(‘A9B52E8F-129F-4113-A473-D4BDD2B3C09C’    ,’768B2E84-0AAB-4653-8F5B-5EF6165204DB’,    ‘WindowsXP’    ,100)

union all select(‘AC228CA0-490C-4B3D-866D-154E771B2083′    ,’58C0F3FD-7B98-4E74-A1A8-7B144FCB8707’,    ‘Windows2008’,    300)

union all select(‘BD0BA1D3-D1D2-4BC7-9EFD-78B1165060A0′    ,’FDBA8B3F-1851-4B73-9A20-A24AEF721AAE’,    ‘DB2’,    200)

union all select(‘CAA71AEA-7130-4AB8-955E-B04EA35A178A’    ,’FDBA8B3F-1851-4B73-9A20-A24AEF721AAE’,    ‘Oracle’,    100)

–This is Business pack .

–Using this function can using table’s row

–to new table’s column

declare @strSql varchar(1000)

declare @column varchar(50)

declare @columns varchar(200)

set @columns = ”

/*According to Cursor get new table column*/

declare varchar_cur cursor for

select distinct proname from product order by proname

open varchar_cur

fetch next from varchar_cur into @column

while @@fetch_status = 0

begin

set @columns = @columns + ‘[‘ + @column + ‘],’

fetch next from varchar_cur into @column

end

Close varchar_cur

Deallocate varchar_cur

/*Converted to the ranks of the use of pivot*/

set @columns = stuff(@columns,len(@columns),1,”)

set @strSql = ‘select comname,’ + @columns

set @strSql = @strSql + ‘ from ‘

set @strSql = @strSql + ‘ (‘

set @strSql = @strSql + ‘ select comname,pronumber,proname from product’

set @strSql = @strSql + ‘ left join company on product.comid = company.comid ‘

set @strSql = @strSql + ‘ ) as temp’

set @strSql = @strSql + ‘ pivot ‘

set @strSql = @strSql + ‘ ( ‘

set @strSql = @strSql + ‘ sum(pronumber) ‘

set @strSql = @strSql + ‘ for proname in (‘ + @columns + ‘) ‘

set @strSql = @strSql + ‘ ) as Pivot_table’

exec(@strSql)

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MsSql sqlserver2005 行列转换实现方法 https://www.niceym.com/59933.html