`
ajax_xu
  • 浏览: 157483 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

表的纵横转化 sqlserver

 
阅读更多
在sqlserver中,我有view结果如下:
cardno type day
001 A1 5
001 A2 4
002 A1 3
002 A3 6
……
其中type总共有A1,A2,A3 ……A7七个值,我现在要变成如下表table1:
cardno A1 A2 A3 A4 A5 A6 A7
001 5 4 0 0 0 0 0
002 3 0 6 0 0 0 0


通过递归的select变量可以完成表的横向显示。举个简单的例子:
declare @column varchar(1024)
set @column=''
select @column=@column+cardno+''


select cardno, sum(A1) 'A1',sum(A2) 'A2', sum(A3) 'A3',sum(A4) 'A4', sum(A5) 'A5',sum(A6) 'A6', sum(A7) 'A7'
from
(select cardno,A1 'A1',0 'A2',0 'A3',0 'A4',0 'A5',0 'A6',0 'A7' from VIEW where TYPE='A1'
union all
select cardno,0 'A1',A2 'A2',0 'A3',0 'A4',0 'A5',0 'A6',0 'A7' from VIEW where TYPE='A2'
union all
select cardno,0 'A1',0 'A2',A3 'A3',0 'A4',0 'A5',0 'A6',0 'A7' from VIEW where TYPE='A3'
union all
select cardno,0 'A1',0 'A2',0 'A3',A4 'A4',0 'A5',0 'A6',0 'A7' from VIEW where TYPE='A4'
union all
select cardno,0 'A1',0 'A2',0 'A3',0 'A4',A5 'A5',0 'A6',0 'A7' from VIEW where TYPE='A5'
union all
select cardno,0 'A1',0 'A2',0 'A3',0 'A4',0 'A5',A6 'A6',0 'A7' from VIEW where TYPE='A6'
union all
select cardno,0 'A1',0 'A2',0 'A3',0 'A4',0 'A5',0 'A6',A7 'A7' from VIEW where TYPE='A7'
)a
group by cardno

select cardno, sum(A1) 'A1',sum(A2) 'A2', sum(A3) 'A3',sum(A4) 'A4', sum(A5) 'A5',sum(A6) 'A6', sum(A7) 'A7'
from (
select cardno,day 'A1',0 'A2',0 'A3',0 'A4',0 'A5',0 'A6',0 'A7' from VIEW where TYPE='A1'
union all
select cardno,0 'A1',day 'A2 ',0 'A3',0 'A4',0 'A5',0 'A6',0 'A7' from VIEW where TYPE='A2'
union all
select cardno,0 'A1',0 'A2 ',day 'A3',0 'A4',0 'A5',0 'A6',0 'A7' from VIEW where TYPE='A3'
union all
select cardno,0 'A1',0 'A2',0 'A3',day 'A4',0 'A5',0 'A6',0 'A7' from VIEW where TYPE='A4'
union all
select cardno,0 'A1',0 'A2',0 'A3',0 'A4',day 'A5',0 'A6',0 'A7' from VIEW where TYPE='A5'
union all
select cardno,0 'A1',0 'A2',0 'A3',0 'A4',0 'A5',day 'A6',0 'A7' from VIEW where TYPE='A6'
union all
select cardno,0 'A1',0 'A2',0 'A3',0 'A4',0 'A5',0 'A6',day 'A7' from VIEW where TYPE='A7'
)a group by cardno


declare @sql varchar(8000)
  
  set @sql = 'select cardno,'
  
  select @sql = @sql + '(case type when '''+type +'''
  
  then day else 0 end) as '''+type +''','
  
  from (select distinct type from view) as a
  
  select @sql = left(@sql,len(@sql)-1) + ' from view group by cardno'
  
  exec(@sql)
  
  go
分享到:
评论

相关推荐

    mysql转化成sql server sql转化成mysql工具

    标题提到的“mysql转化成sql server”和“sql转化成mysql工具”就是解决这个问题的关键。 首先,我们来讨论MySQL到SQL Server的转换。MySQL是一种开源、轻量级的DBMS,适合小型到大型的应用场景。而SQL Server则...

    40集SQL Server 基础入门视频教程 SQL Server 数据库基础入门必备课程

    10.SQL Server 2014定义表主键、外键.mp4 11.SQL Server 2014新增表记录.mp4 12.SQL Server 2014查询表记录.mp4 13.SQL Server 2014修改表记录.mp4 14.SQL Server 2014删除表记录.mp4 15.SQL Server 2014条件...

    SQL Server查看所有表大小,所占空间

    用SQL语句查看SQL Server中的数据库查看所有表大小,所占空间

    查看SQLServer数据库每个表占用的空间大小.sql

    快捷方便,可查看sqlserver数据库每个表的使用情况,一次下载终身使用,此文件为sql语句格式,免费试用

    C# 开发SQLSERVER数据库自动建表

    标题“C# 开发SQLSERVER数据库自动建表”表明我们将讨论一个使用C#开发的程序,该程序可以自动化创建SQL Server数据库中的表结构。这个功能对于数据导入、系统初始化或简化数据库管理流程非常有用。 描述中提到,该...

    SqlServer连接工具

    它包含了对SQL Server实例的各种管理工具,例如对象资源管理器,用于浏览和操作数据库、表、存储过程、触发器等数据库对象;查询编辑器,支持Transact-SQL语句的编写和执行;以及脚本生成器,帮助用户创建和维护...

    sqlserver 根据内容,查询表和列名字

    sqlserver 根据字段内容,查询表和列名字 sqlserver 根据字段内容,查询表和列名字 sqlserver 根据字段内容,查询表和列名字 sqlserver 根据字段内容,查询表和列名字 sqlserver 根据字段内容,查询表和列名字

    SqlServer删除所有表数据语句

    Sql Server 删除所有表数据语句 Sql Server 是一种关系型数据库管理系统,广泛应用于企业级应用程序中。在实际开发和测试中,我们常常需要删除数据库中的所有表数据,而保持表结构不变。下面我们将介绍如何使用一条...

    Sql Server 2014 安装包

    你可以通过它编写、调试T-SQL代码,管理数据库对象,如表、视图、存储过程等,并进行数据库权限设置。此外,它还支持对SQL Server的各种服务进行配置,包括SQL Server Agent、Analysis Services、Integration ...

    Navicat 实现同步sqlserver表结构到mysql操作手册1

    本文将详细介绍如何使用Navicat工具实现SQL Server表结构到MySQL的同步操作,这对于那些需要在不同数据库系统间进行数据迁移的开发者来说尤其有用。 Navicat是一款强大的数据库管理工具,支持多种数据库类型,包括...

    sql server2019安装包

    SQL Server 2019是Microsoft推出的一款关系型数据库管理系统,是SQL Server系列中的一个重要版本。它提供了强大的数据存储、处理和分析能力,广泛应用于企业级数据库应用开发和数据分析。在本安装包中,主要包含的是...

    SQL Server Native Client 10,以便于SQLserver高版本可以链接SQLserver2000

    压缩包内附带链接服务器创建脚本方式,此SQL Server Native Client 10.0无病毒,有64位和32位可供选择。...安装完SQL Server Native Client 10.0后再创建个链接服务器,可以实现高版本SQLserver远程链接SQLserver2000。

    SQL Server Native Client 10.0

    在SQL Server 2012中,虽然主要推荐使用SQL Server Native Client 11.0,但为了兼容旧版本的SQL Server,如SQL Server 2000,仍然需要使用SQL Server Native Client 10.0。 **1. ODBC与OLE DB接口** - **ODBC**: ...

    sql server 练习表

    此文档为sql server练习表,适合初学者练习用,数据可自行增加

    sqlserver自动生成sql语句工具sqlserver转oracle

    首先,标题中的"sqlserver自动生成sql语句工具"指的是可以分析SQL Server数据库结构和数据,自动生成对应的SQL创建语句的软件。这种工具通常能帮助数据库管理员快速获取数据库的定义,便于备份、迁移或在其他环境中...

    sql server客户端连接工具

    SQL Server客户端连接工具是数据库管理员和开发人员用来与Microsoft SQL Server进行交互的重要工具。它提供了图形用户界面(GUI)和命令行选项,使得用户能够轻松地执行查询、管理数据库对象以及进行其他数据库维护...

    SQL Server 2014基础入门视频教程 (40集,含课件)

    8.SQL Server 2014新建表.mp4 9.SQL Server 2014修改、删除表结构.mp4 10.SQL Server 2014定义表主键、外键.mp4 11.SQL Server 2014新增表记录.mp4 12.SQL Server 2014查询表记录.mp4 13.SQL Server 2014修改...

    SqlServer2005 打开 SqlServer2008 mdf文件

    1. 右击 Sql Server 2005 中的 jmmaj 数据库,选择“任务”->“导入数据”,然后选择数据源和目标数据,复制一个或多个表或视图数据。 2. 在选择源表和源视图的时候,点击下面的“编辑影射”按钮,然后把“启用标识...

    使用flink-connector-sqlserver-cdc 2.3.0把数据从SQL Server实时同步到MySQL中

    - 首先,你需要在你的Flink项目中添加`flink-connector-sqlserver-cdc_2.11-2.3.0`依赖。这可以通过Maven或Gradle的依赖管理来完成。 - 接着,配置连接器以指向你的SQL Server实例,包括服务器地址、端口、数据库...

    json转换为SQL server建表脚本

    在开发过程中,有时我们需要将JSON数据转化为SQL Server的建表脚本,以便在数据库中创建相应的表结构来存储这些数据。 标题"json转换为SQL server建表脚本"涉及到的主要知识点包括: 1. JSON解析:首先,你需要...

Global site tag (gtag.js) - Google Analytics