sqlserver2005 行列转换实现方法_MsSql

复制代码 代码如下:

--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)

时间: 2024-10-10 23:26:46

sqlserver2005 行列转换实现方法_MsSql的相关文章

sqlserver2005 行列转换实现方法

复制代码 代码如下: --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 ( Produ

Oracle实现行列转换的方法分析_oracle

本文实例讲述了Oracle实现行列转换的方法.分享给大家供大家参考,具体如下: 1.固定列数的行列转换 如: student subject grade --------- ---------- -------- student1 语文 80 student1 数学 70 student1 英语 60 student2 语文 90 student2 数学 80 student2 英语 100 -- 转换为: 语文 数学 英语 student1 80 70 60 student2 90 80 10

一个简单的SQL 行列转换语句_MsSql

一个简单的SQL 行列转换 Author: eaglet 在数据库开发中经常会遇到行列转换的问题,比如下面的问题,部门,员工和员工类型三张表,我们要统计类似这样的列表 部门编号 部门名称 合计 正式员工 临时员工 辞退员工 1 A 30 20 10 1 这种问题咋一看摸不着头绪,不过把思路理顺后再看,本质就是一个行列转换的问题.下面我结合这个简单的例子来实现行列转换. 下面3张表 复制代码 代码如下: if exists ( select * from sysobjects where id =

浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用_Mysql

/*创建数据库*/ CREATE DATABASE tmp go USE tmp go /*创建数据库测试表*/ CREATE TABLE [Scores]     (       [ID] INT IDENTITY(1, 1)                PRIMARY KEY ,       [Student] VARCHAR(20) ,       [Subject] VARCHAR(30) ,       [Score] FLOAT     ) go TRUNCATE TABLE Sc

在WPS中用转置实现表格行列转换

有时,我们需要将已经做好的表格的行.列对调一下,手工转换不仅费时费力,还容易出错,那有没有更简单也更可靠的方式实现表格中的行列转换呢? 方法一:用WPS表格的"选择性粘贴"实现转换. 在WPS表格2005中,选中整个表格,复制到剪贴版,然后将光标置于空白处,从菜单中点选"编辑-选择性粘贴",在弹出的对话框中选中"转置"(图1),确定后即把整个表格"翻了个个儿"粘贴到指定位置了(图2).如果要转换的是WPS文字中的表格,可以先在

怎么让wps表格实现行列转换

  方法一:用WPS表格的"选择性粘贴"实现转换. 在WPS表格2005中,选中整个表格,复制到剪贴版,然后将光标置于空白处,从菜单中点选"编辑-选择性粘贴",在弹出的对话框中选中"转置"(图1),确定后即把整个表格"翻了个个儿"粘贴到指定位置了(图2).如果要转换的是WPS文字中的表格,可以先在WPS文字中将表格复制.粘贴到WPS表格中,再用上述方法实现. 方法二:利用插件轻松实现 WPS高手初少制作的WPS文字工具栏插件中

Excel表格行列转换教程

  在Excel表格操作过程中,我们常常会需要将Excel表格行列转换,不懂这种方法的朋友们可以来学习一下Excel行列转换教程. Excel技巧 Excel表格行列转换教程 步骤一.选择需要转换为列的行区域 首先打开相应的工作表,选择需要转为列的行单元格区域,如图所示: 步骤二.复制选中的行内容 切换到"开始"选项卡,在"剪贴板"选项组中单击"复制"按钮,复制选中内容. 步骤三.打开"选择性粘贴"对话框 单击要转换区域的起始

【转】SQL行列转换

原文地址:http://blog.csdn.net/kiki113/article/details/4105929   行列转换等经典SQL语句 1.--行列转换 原表:   姓名     科目   成绩            张三     语文    80            张三     数学    90            张三     物理    85            李四     语文    85            李四     物理    82            李

行列转换-sql 检索结果拼接成字符串。。

问题描述 sql 检索结果拼接成字符串.. 因项目中业务要求所致,写SQL的时候对检索结果的最后两列进行了行列转换.如下pivot (sum(sl) for community_code in ('0201' 社区1 '0202' 社区2'0203' 社区3))因为社区的个数不确定,就导致了输出的结果集中列的个数也不确定.所以用实体类进行接收结果集的时候就遇到了麻烦.对应上述问题,决定将结果集的每一行拼接成一个字符串.那么问题就来了,输出的数据和社区名称对应不起来了..不知道有没有什么好的方法解