sql 列转行 实例

select * from dbo.orders  group by  custid  with cube    select custid ,row_number() over(order by empid) as number from  orders    select count(*) from orders where empid >‘5‘ and orderid in (‘10248‘,‘10249‘)    drop table test  create table test(id int,name varchar(20),quarter int,profile int) insert into test values(1,‘a‘,1,1000) insert into test values(1,‘a‘,2,2000) insert into test values(1,‘a‘,3,4000) insert into test values(1,‘a‘,4,5000) insert into test values(2,‘b‘,1,3000) insert into test values(2,‘b‘,2,3500) insert into test values(2,‘b‘,3,4200) insert into test values(2,‘b‘,4,5500) select * from test

select id,name, [1] as "一季度", [2] as "二季度", [3] as "三季度", [4] as "四季度", [5] as "5" from test pivot ( sum(profile) for quarter in ([1],[2],[3],[4],[5]) ) as pvt CREATE TABLE [dbo].[TestRows2Columns](     [Id] [int] IDENTITY(1,1) NOT NULL,     [UserName] [nvarchar](50) NULL,     [Subject] [nvarchar](50) NULL,     [Source] [numeric](18, 0) NULL ) ON [PRIMARY] GO

--插入测试数据 INSERT INTO [TestRows2Columns] ([UserName],[Subject],[Source])     SELECT N‘张三‘,N‘语文‘,60  UNION ALL     SELECT N‘李四‘,N‘数学‘,70  UNION ALL     SELECT N‘王五‘,N‘英语‘,80  UNION ALL     SELECT N‘王五‘,N‘数学‘,75  UNION ALL     SELECT N‘王五‘,N‘语文‘,57  UNION ALL     SELECT N‘李四‘,N‘语文‘,80  UNION ALL     SELECT N‘张三‘,N‘英语‘,100 GO

SELECT * FROM [TestRows2Columns]

select username , sum(case[subject] when ‘数学‘ then source else  0 end) as ‘[数学]‘, sum(case[subject] when ‘英语‘ then source else  0 end) as ‘[英语]‘, sum(case[subject] when ‘语文‘ then source else  0 end) as ‘[语文]‘ from [TestRows2Columns] group by username

select * from (select username,subject,source from TestRows2Columns)p pivot (sum (source) for subject in ([数学],[英语],[语文] )) as v order by v.username

时间: 2024-10-22 11:49:35

sql 列转行 实例的相关文章

sql列转行查询

test表: 执行列转行sql: select student, sum(case Course when '语文' then Score else null end) 语文, sum(case Course when '数学' then Score else null end) 数学, sum(case Course when '英语' then Score else null end) 英语 from test group by student 得到结果:

SQL列转行

典型实例 一.行转列 1.建立表格 IF OBJECT_ID('tb') IS NOT NULL DROP TABLE tb go CREATE TABLE tb(姓名 VARCHAR(10),课程 VARCHAR(10),分数 INT) insert into tb VALUES ('张三','语文',74) insert into tb VALUES ('张三','数学',83) insert into tb VALUES ('张三','物理',93) insert into tb VALU

SQL 列转行,即多行合并成一条

需求:按照分组,将多条记录内容合并成一条,效果如下: 数据库示例: CREATE TABLE [t2]([NID] [bigint] NULL,[district] [nvarchar](255) NULL,[town] [nvarchar](255) NULL); insert into t2 values(1,'淮上区','曹老集镇'); insert into t2 values(2,'淮上区','淮滨街道'); insert into t2 values(3,'淮上区','梅桥乡');

SQL 列转行

普通行列转换 (爱新觉罗.毓华 2007-11-18于海南三亚) 假设有张学生成绩表(tb)如下: Name Subject Result 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 */ /* 想变成 姓名 语文 数学 物理 李四 74 84 94 张三 74 83 93 */ create table tb ( Name varchar(10) , Subject varchar(10) , Result int ) inser

Sql 列转行 三种方法对比

合并列值 --******************************************************************************************* 表结构,数据如下: id    value ----- ------ 1    aa 1    bb 2    aaa 2    bbb 2    ccc 需要得到结果: id    values ------ ----------- 1      aa,bb 2      aaa,bbb,ccc 即

SQLserver行转列与列转行

行表: 行表 姓名 属性 属性值 JACK 身高 180 JACK 体重 80 JACK 年龄 27 TOM 身高 164 TOM 体重 59 TOM 年龄 20 列表: 列表 姓名 身高 年龄 体重 JACK 180 27 80 TOM 164 20 59 行转列就是将行表转换为列表,反之为列转行. --================================================================== ----------------------------行

Sql 行专列、列转行及分面

说明:本实例是以 SQL Server 2005 为运行环境的. 准备工作:创建一个名为 DB 的数据库(CREATE DATABASE DB). 一.T-SQL 行转列 1.创建如下表 CREATE  TABLE [Scores]  ( [ID] INT IDENTITY(1,1), --自增标识 [StuNo] INT,                         --学号 [Subject] NVARCHAR(30),     --科目 [Score] FLOAT           

SQL Server FOR XML PATH 语句的应用---列转行

经常在论坛看到高手使用了 for xml path,由于是搜索一下,记录了详细的使用方法.在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用示例. DECLARE @TempTable table(UserID int , UserName nvarchar(50));insert into @TempTable (UserID,UserName) values (1,'a')insert into @TempTable (UserID

sql中的行转列和列转行的问题

sql中的行转列和列转行的问题 这是一个常见的问题,也是一个考的问题 1.行转列的问题  简单实例 CREATE TABLE #T ( MON1 INT, MON2 INT, MON3 INT ) GO INSERT INTO #T VALUES(1,2,3) GO SELECT * FROM #T --行转列:(union all) SELECT MON1 FROM #T UNION ALL SELECT MON2 FROM #T UNION ALL SELECT MON3 FROM #T G