• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > mssql 数据库表行转列,列转行终极方案

mssql 数据库表行转列,列转行终极方案

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了mssql,行转列等相关知识,希望本文的分享对您有所帮助

mssql 数据库表行转列,列转行终极方案,需要的朋友可以参考下。

代码如下:
--行转列问题
--建立測試環境
Create Table TEST
(DATES Varchar(6),
EMPNO Varchar(5),
STYPE Varchar(1),
AMOUNT Int)
--插入數據
Insert TEST Select '200605', '02436', 'A', 5
Union All Select '200605', '02436', 'B', 3
Union All Select '200605', '02436', 'C', 3
Union All Select '200605', '02436', 'D', 2
Union All Select '200605', '02436', 'E', 9
Union All Select '200605', '02436', 'F', 7
Union All Select '200605', '02436', 'G', 6
Union All Select '200605', '02438', 'A', 7
Union All Select '200605', '02438', 'B', 8
Union All Select '200605', '02438', 'C', 0
Union All Select '200605', '02438', 'D', 3
Union All Select '200605', '02438', 'E', 4
Union All Select '200605', '02438', 'F', 5
Union All Select '200605', '02438', 'G', 1
GO
--測試
--如果STYPE固定,可以這麼寫
Select
DATES,
EMPNO,
SUM(Case STYPE When 'A' Then AMOUNT Else 0 End) As A,
SUM(Case STYPE When 'B' Then AMOUNT Else 0 End) As B,
SUM(Case STYPE When 'C' Then AMOUNT Else 0 End) As C,
SUM(Case STYPE When 'D' Then AMOUNT Else 0 End) As D,
SUM(Case STYPE When 'E' Then AMOUNT Else 0 End) As E,
SUM(Case STYPE When 'F' Then AMOUNT Else 0 End) As F,
SUM(Case STYPE When 'G' Then AMOUNT Else 0 End) As G
From TEST
Group By DATES,EMPNO
Order By DATES,EMPNO

--如果STYPE不固定,用動態語句
Declare @S Varchar(1000)
Set @S=''
Select @S=@S+',SUM(Case STYPE When '''+STYPE+''' Then AMOUNT Else 0 End) As '+STYPE From (Select Distinct STYPE From TEST) A Order By STYPE
Set @S='Select DATES,EMPNO'+@S+' From TEST Group By DATES,EMPNO Order By DATES,EMPNO'
EXEC(@S)
GO
--如果被转置的是数字类型的话,应用下列语句
DECLARE @S VARCHAR(1000)
SET @S='SELECT DATES,EMPNO '
SELECT @S=@S+',['+STYPE+']=SUM(CASE WHEN STYPE='''+STYPE+''' THEN AMOUNT ELSE 0 END)'
FROM (Select Distinct STYPE From TEST) A Order By STYPE
SET @S=@S+' FROM TEST GROUP BY DATES,EMPNO'
EXEC(@S)

如果是列转行的话直接Union All就可以了

例如 :

city style color 46 48 50 52
长沙 S6MF01002 152 1 2 2 1
长沙 S6MF01002 201 1 2 2 1
上面到下面的样子
city style color size qty
长沙 S6MF01002 152 46 1
长沙 S6MF01002 152 48 2
长沙 S6MF01002 152 50 2
长沙 S6MF01002 152 52 1
长沙 S6MF01002 201 46 1
长沙 S6MF01002 201 48 2
长沙 S6MF01002 201 50 2
长沙 S6MF01002 201 52 1

Select City,Style,Color,[46] From Test
Union all
Select City,Style,Color,[48] From Test
Union all
Select City,Style,Color,[50] From Test
Union all
Select City,Style,Color,[52] From Test

就可以了
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于mssql导mysql遇到的问题
  • 解析MSSQL跨数据库查询的实现方法
  • mssql2008 自定义表类型实现(批量插入或者修改)
  • MSSQL根据ID进行分页实现方法
  • mssql转换mysql的方法小结
  • MySQL与MSSQl使用While语句循环生成测试数据的代码
  • MSSQL output使用
  • MSSQL 添加字段说明
  • 如何操作MSSQL查询数据分页
  • MSSQL 存储过程加密详解

相关文章

  • 2017-05-11Can't connect to MySQL server on localhost (10061)解决方法
  • 2018-12-05Mysql学习总结(16)Mysql之数据库设计规范_MySQL
  • 2018-12-05MYSQL之插入极限分析
  • 2017-05-11MySQL与MSSQl使用While语句循环生成测试数据的代码
  • 2018-12-05SQLSERVER查询所有数据库名,表名,和字段名的语句
  • 2018-12-05MySQL中使用replace、regexp进行正则表达式替换的用法分析
  • 2018-12-05理解MySQL——索引与优化
  • 2018-12-05详解在mysql查询时,offset过大影响性能的原因与优化方法
  • 2018-12-05 【MySQL 07】数据库恢复技术
  • 2017-09-02MySQL分布式集群之MyCAT配置文件rule.xml的详细分析

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • navicat无法远程连接mysql的解决方法
    • MySQL性能优化配置参数之thread_cache和table_cache详解
    • Mysql 行级锁的使用及死锁的预防方案
    • mysql中的PACK_KEYS详解
    • Linux下修改MySQL编码的方法
    • 如何查看数据库alert日志文件
    • 一个比较实用的大数据量分页存储过程
    • 十个节省时间的MySQL命令小结
    • VPS下修改MySQL root用户密码的方法
    • 详细讲解mysql的存储过程、游标 、事务

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有