`
litianyi520
  • 浏览: 43038 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL语句之普通行列转换

SQL 
阅读更多

SQL语句之普通行列转换

假设有张学生成绩表(tb_rowtocol)如下
Name Subject Result
张三 语文  73
张三 数学  83
张三 物理  93
李四 语文  74
李四 数学  84
李四 物理  94

想变成
姓名 语文 数学 物理
张三 73  83  93
李四 74  84  94

declare @sql varchar(4000)
set @sql = 'select Name as ' + '姓名'
select @sql = @sql + ' , sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
from (select distinct Subject from rowtocol) as a
set @sql = @sql + ' from rowtocol group by name'
exec(@sql)

如果上述两表互相换一下:即
表名(cj)
姓名 语文 数学 物理
张三 73  83  93
李四 74  84  94

想变成

Name Subject Result
张三 语文  73
张三 数学  83
张三 物理  93
李四 语文  74
李四 数学  84
李四 物理  94

select 姓名 as Name,'语文' as Subject,语文 as Result from CJ union
select 姓名 as Name,'数学' as Subject,数学 as Result from CJ union
select 姓名 as Name,'物理' as Subject,物理 as Result from CJ
order by 姓名 desc

分享到:
评论

相关推荐

    SQL语句普通行列转换.docx

    ### SQL语句普通行列转换详解 #### 一、背景与目的 本文档旨在介绍如何使用SQL Server中的行列转换功能来解决常见的数据展示需求。通过具体的示例,将原始的宽表(每一行代表一个学生的所有科目成绩)转换为长表...

    精典的SQL语句。行转列,列转行的语句

    本文共分六个部分,分别讨论精典的SQL语句,行转列,列转行的语句,行列转换、取得数据表的所有列名、更改用户密码、判断表的哪些字段不允许为空、找到含有相同字段的表六个方面。 一、行列转换--普通 在实际应用...

    sql 普通行列转换

    【SQL 普通行列转换】是数据库查询中常见的需求,尤其在数据分析和报表生成时。这个话题主要涉及如何将数据表中的行数据转换为列数据,以便更方便地展示和分析。在本文中,我们将重点讨论如何在SQL Server 2000和SQL...

    sql 行专列 列转行 普通行列转换

    在实际工作中,除了SQL语句外,还可以借助一些工具来辅助转换。例如,SQL Server Management Studio(SSMS)中的“导入导出数据”功能,Power BI,或者Python、R等编程语言,它们提供了更直观的界面和强大的数据处理...

    经典SQL脚本大全

    │ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 text与ntext字段的复制和合并处理示例.sql │ │ 3.7.4 text与image字段转换处理示例.sql │ │ 3.7.5 ntext字段的REPLACE处理示例.sql │...

    Sqlserver2000经典脚本

    -列车车次查询.sql │ │ 3.6.2 字符串在编号查询中的应用示例及常见问题.sql │ │ 3.6.3 动态参数的存储过程示例.sql │ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 ...

    SQL 通过行动态生成列

    这通常涉及到存储过程,因为普通的SQL语句在编译时必须确定所有的列。动态SQL允许我们在运行时构建并执行SQL语句,使得列的生成可以根据输入参数或查询结果动态调整。 4. **自连接或子查询**:在不支持PIVOT操作的...

    表的相关查询(最全面的查询语句集合)

    ### 普通行列转换 #### SQL Server 2000 行转列 对于 SQL Server 2000,可以使用动态 SQL 来实现行转列的功能。下面的示例展示了如何将数据表中的行转换为列: ```sql CREATE TABLE tb (name VARCHAR(10), γ ...

    SQL经典短小代码

    #### 普通行列转换(version2.0) 此知识点进一步拓展了行列转换的应用场景,特别是对于SQL Server 2005及以上版本的支持。 **问题背景:** 假设有一张学生成绩表(`tb`),包含学生的姓名、所学科目及成绩。需要将其...

    sql超级经典(练习题+答案)

    --17.2 SQL 2000 动态 --17.3 有关sql 2005的动静态写法参见我的文章《普通行列转换(version 2.0)》或《普通行列转换(version 3.0)》。--18、查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name...

    Oracle事例

    字符串字段中含有\"\'\",如果用来组合sql语句,会造成语句不准确。 比如:replace(f1,\'\'\'\',\'\') <2>.字符串字段中含有\"\\t \\n\",如果用来在c或者c++程序中输出到文件,格式无法保证。 比如:replace(f2,...

    数据库选择题练习整理.pdf

    27. 不属于SQL常用语句的是(C UPDATE),因为UPDATE是SQL中用于更新数据的语句。 这些题目涵盖了数据库设计的基本概念、关系模型、SQL查询语法以及Access数据库应用,对于理解和掌握数据库基础知识非常有帮助。...

    MYSQL培训经典教程(共两部分) 2/2

    MYSQL高级特性 81 4.1 集合函数 82 4.1.1 行列计数 82 4.1.2统计字段值的数目 82 4.1.3 计算字段的平均值 83 4.1.4 计算字段值的和 84 4.1.5 计算字段值的极值 84 4.1.6 总结 86 4.2 操作...

    MYSQL培训经典教程(共两部分) 1/2

    MYSQL高级特性 81 4.1 集合函数 82 4.1.1 行列计数 82 4.1.2统计字段值的数目 82 4.1.3 计算字段的平均值 83 4.1.4 计算字段值的和 84 4.1.5 计算字段值的极值 84 4.1.6 总结 86 4.2 操作...

    Mysql数据库学习

    **1.5 SQL语句的分类** - **DDL(Data Definition Language):** 用于定义数据库对象,如创建数据库、表等。 - **DML(Data Manipulation Language):** 用于操作数据,如插入、更新、删除数据等。 - **DQL(Data...

    BO报表中文教程(非常好的教程)

    - **查询编辑技巧**:教授用户如何查看和编辑生成的SQL语句以优化查询性能。 **4.6 定义查询属性** - **属性设置**:指导用户如何为查询定义各种属性。 - **高级设置**:介绍一些更高级的查询属性设置方法。 **...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例043 将二维数组中的行列互换 53 实例044 利用数组随机抽取幸运观众 54 实例045 用数组设置JTable表格的列名与列宽 55 3.2 数组操作 57 实例046 数组的下标界限 57 实例047 按钮控件数组实现计数器界面 58 实例...

Global site tag (gtag.js) - Google Analytics