CREATE TABLE [Test] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[subject] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Source] [numeric](18, 0) NULL
) ON [PRIMARY]
GO
INSERT INTO [test] ([name],[subject],[Source]) values (N'张三',N'语文',60)
INSERT INTO [test] ([name],[subject],[Source]) values (N'李四',N'数学',70)
INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'英语',80)
INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'数学',75)
INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'语文',57)
INSERT INTO [test] ([name],[subject],[Source]) values (N'李四',N'语文',80)
INSERT INTO [test] ([name],[subject],[Source]) values (N'张三',N'英语',100)
Go
--交叉表语句的实现:
--用于:交叉表的列数是确定的
select name,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 test
group by name
--用于:交叉表的列数是不确定的
declare @sql varchar(8000)
set @sql = 'select name,'
select @sql = @sql + 'sum(case subject when '''+subject+'''
then source else 0 end) as '''+subject+''','
from (select distinct subject from test) as a
select @sql = left(@sql,len(@sql)-1) + ' from test group by name'
exec(@sql)
go
--用于:交叉表的列数是不确定的
declare @sql varchar(8000)
set @sql = 'select id,'
select @sql = @sql + '(case subject when '''+subject+'''
then source else null end) as '''+subject+''','
from (select distinct subject from test) as a
select @sql = left(@sql,len(@sql)-1) + ' from test '
exec(@sql)
go
分享到:
相关推荐
### SQL列转行显示方法 #### 一、背景及需求 在处理数据库中的数据时,有时候需要将一列中的多个值转化为多列的形式展示,这通常称为“列转行”操作。这种转换可以使得数据更适合特定的报表或分析需求。例如,原始...
### 标题解析:SQL列转行及行转列的通用存储过程 该标题表明文章主要介绍在SQL中如何通过一个通用的存储过程实现列数据转化为行数据(列转行),或者反过来将行数据转化为列数据(行转列)。这两种转换方式在处理多...
SQL 列转行技巧详解 SQL 列转行是将行数据转换为列数据的技术,广泛应用于数据分析、报表生成和数据挖掘等领域。今天,我们将通过实例详细介绍 SQL 列转行的用法和技巧。 什么是 SQL 列转行 SQL 列转行是指将行...
SQL 列转行 能直接运行
DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列
SQL行专列列转行的存储过程 很实用的 SQL行专列列转行的存储过程 很实用的
本文将详细介绍两种实现SQL Server 2005中列转行的方法:使用PIVOT和使用CASE语句。 **方法一:使用PIVOT** PIVOT是SQL Server 2005引入的一个新特性,用于将一个表中的列转换为行。以下是一个基本的PIVOT使用示例...
可以把一列转成一行…… 分隔符默认为英文逗号,也可以转成INSERT 中VALUES()后面的单引号加逗号...以前用T-SQL时,总是把一列复制到EXCEL中,转置,然后复制到记本事中,把一空格替换成逗号……,这个工具可以直接搞定
SQL Server 列转行代码,供大伙参考
### HANA SQL参考手册知识点概览 #### 一、引言 HANA SQL参考手册是为SAP HANA数据库设计的全面指南,旨在提供关于如何使用SQL语言与HANA进行交互的所有必要信息。该手册覆盖了从基本概念到高级主题的各种内容,...
### SqlServer列转行的另一种方式 在数据库处理过程中,经常需要将数据按照特定的方式进行转换,以便更好地满足业务需求或提高查询效率。常见的转换包括列转行、行转列等操作。通常我们使用`PIVOT`和`UNPIVOT`来...
在本案例中,我们将详细探讨如何在SQL Server 2005中进行列转行的操作,特别是通过存储过程来实现。 首先,列转行通常用于处理具有固定列数但列名可能变化的数据。例如,你可能有一个表,其中每个月的销售数据存储...
SqlServer如何进行行转列和列转行方法
sql 行转列 与列转行,oracle ,msssql等,详细数据库操作方法,各种例子,欢迎大家学习。、~
### SQL语句实现表的行列转换,行转列,列转行 在处理数据库时,我们经常需要对数据进行各种变换以适应不同的分析需求。其中,“行列转换”就是一种非常实用的功能,它可以帮助我们将表中的行数据转换为列数据,...
MySQL 虽然没有内置的行转列和列转行函数,但通过 CASE、GROUP_CONCAT、UNION ALL 和 JOIN 等 SQL 语句,我们可以灵活地对数据进行转换,满足不同的数据分析需求。在实际应用中,应根据数据的特性和业务需求选择合适...
### SQL Server 使用 UNPIVOT 函数实现列转行 #### 概述 在 SQL Server 中,`UNPIVOT` 函数是一个非常实用的功能,主要用于将数据表中的列转换为行,即“列转行”操作。这种操作在数据分析过程中经常用到,尤其是...
精典的SQL语句,行转列,列转行的语句 本文共分六个部分,分别讨论精典的SQL语句,行转列,列转行的语句,行列转换、取得数据表的所有列名、更改用户密码、判断表的哪些字段不允许为空、找到含有相同字段的表六个...
### T-SQL经典编程之行转列与列转行技巧详解 #### 一、T-SQL 行转列 在数据库处理中,行转列是一种常见的数据转换需求,特别是当需要将多行记录中的某一列数据按照特定条件聚合到一行中的不同列时。 **实例背景**...