`
ronon
  • 浏览: 193812 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

SQLServer 使用变量动态行转列

阅读更多

drop table #test
create table #test
(
    id int identity(1,1) primary key,
    bizDate varchar(50),
    type varchar(50),
    qty float
)

insert into #test
select '20110501','A',20.5 union all
select '20110501','B',98 union all
select '20110501','C',100.5 union all
select '20110501','A',32 union all
select '20110501','C',76.8 union all
select '20110502','B',58 union all
select '20110502','A',111 union all
select '20110502','A',51 union all
select '20110502','A',85 union all
select '20110502','B',52 union all
select '20110502','C',43 union all
select '20110503','A',158 union all
select '20110503','C',58 union all
select '20110503','B',28 union all
select '20110503','B',65 union all
select '20110503','A',11 union all
select '20110503','A',25 union all
select '20110503','C',63

 

 

declare @sql varchar(8000)
set @sql = 'select type' 
select @sql = @sql + ' , SUM(CASE WHEN bizDate=''' + bizDate + ''' then qty else 0 end) [' + bizDate + ']'
from (select distinct bizDate from #test) as a order by bizDate--此行的SQL用于找出不重复的日期,也就是结果集中所有的日期
set @sql = @sql + ' from #test A group by type'
print @sql
exec(@sql)

 


--打印出来的完整SQL是:
select type ,
       SUM(CASE WHEN bizDate='20110501' then qty else 0 end) [20110501] ,
       SUM(CASE WHEN bizDate='20110502' then qty else 0 end) [20110502] ,
       SUM(CASE WHEN bizDate='20110503' then qty else 0 end) [20110503]
       from #test A group by type

 


      

/*
PS. SQLServer里的中括号作用:
 若表名、字段名、列名等与数据库里的关键字有冲突,则可以给该表名或字段名加上"[]"以识区别。
 上面的例子中是以日期作为列名,也可用"[]"标识
*/

 

 

 

 

分享到:
评论

相关推荐

    SQL行转列参考代码(sqlserver)

    在SQL Server中,"行转列"是一种常见的数据操作,它可以帮助我们把表格中的多行数据转换成一列,或者将某一列的数据转换为多列显示。这种技术在数据分析、报表制作以及信息展示中非常实用。本文将详细介绍SQL Server...

    在Sql Server查询语句中能不能用变量表示表名

    在SQL Server中,查询语句是否可以使用变量来表示表名是一个常见的疑问,尤其是在编写动态SQL时。在SQL Server中,确实可以通过变量来构建动态的表名,但这需要借助存储过程或者动态SQL来实现。这是因为SQL语句在...

    SQLserver全局变量

    这些变量可以在查询中被查询,以获取关于SQL Server实例的实时信息,例如系统活动、错误处理、用户信息以及资源使用情况等。以下是一些主要的SQL Server全局变量及其用途的详细说明: 1. `@@ERROR`:返回最后执行的...

    sql server 中行转列

    在 SQL Server 中实现行转列的方法多种多样,包括使用静态 SQL 结合 `CASE` 和 `SUM` 函数的方式,以及使用动态 SQL 构建复杂查询的方式。这两种方法各有优势: - **静态 SQL**:适合于列名固定的情况,编写简单...

    sql动态行转列 存储过程

    在动态行转列的过程中,存储过程可以灵活地处理未知数量的列,这是常规SQL查询难以做到的。 创建存储过程的一般步骤如下: 1. **定义输入参数**:存储过程可能需要知道哪些列需要转换,这可以通过传入一个包含列名...

    sql全局变量说明_sql_server

    22. **@@SERVICENAME**:表明SQL Server正在运行的服务模式,比如MS SQLServer、MSDTC或SQLServerAgent。 23. **@@SPID**:返回当前会话的服务器进程ID,对于跟踪和解决问题很有帮助。 24. **@@TEXTSIZE**:设置或...

    sql server 2008 将一列值转换成一个字符串

    在SQL Server 2008中,将一列值转换为一个字符串是一个常见的需求,特别是在进行数据汇总或生成报告时。本篇文章将详细介绍如何利用SQL Server 2008中的功能来实现这一需求,并深入探讨背后的原理和技术要点。 ### ...

    SqlServer列转行的另一种方式

    ### SqlServer列转行的另一种方式 在数据库处理过程中,经常需要将数据按照特定的方式进行转换,以便更好地满足业务需求或提高查询效率。常见的转换包括列转行、行转列等操作。通常我们使用`PIVOT`和`UNPIVOT`来...

    SQL Server 2000系统表地图.rar_sql_sql server_sql server 2000_多变量

    SQL Server 2000是Microsoft推出的一款关系型数据库管理系统,它在企业级应用中扮演着重要的角色。系统表是SQL Server内部结构的核心组成部分,它们存储了关于数据库、索引、用户、权限等所有元数据信息。理解这些...

    SQL Server 系统存储过程全局变量

    ### SQL Server系统存储过程全局变量解析 在SQL Server中,全局变量是一类特殊的变量,它们由系统维护,用于存储和返回关于SQL Server运行时状态的信息。这些变量无需声明即可使用,且其值不能被用户直接修改。全局...

    2018SqlServer Sql Prompt

    3. **重构工具**:Sql Prompt提供了多种重构选项,如重命名变量、表或列,无需手动搜索并替换所有引用,有效降低了因修改数据库结构带来的潜在风险。 4. **性能分析**:内置的性能分析器可以帮助我们快速识别慢查询...

    sql动态行转列的两种方法

    本文将详细介绍两种SQL动态行转列的方法,适用于处理具有多种分类或时间序列的数据。 **方法一:使用PIVOT函数** PIVOT是SQL Server中的一个内置函数,用于将特定列的值转换为列名。在提供的代码示例中,首先通过...

    SQL Server 行专列存储过程

    综上所述,`up_get_activity_list` 存储过程是一个复杂的 SQL Server 实现,它不仅能够根据指定条件筛选数据,还能通过动态生成 SQL 语句来灵活地转换数据格式和执行特定的运算。这种设计方式使得存储过程能够适应...

    toad for sqlserver操作手册

    ### Toad for SQL Server 操作手册关键知识点解析 #### 一、Toad for SQL Server 简介 Toad for SQL Server 是一款第三方数据库管理工具,专为Microsoft SQL Server 设计,提供了丰富的功能来帮助数据库管理员(DBA)...

    通过SqlServer向数据库服务器上传文件

    在SQL Server中上传文件,除了FILESTREAM,还可以使用VARBINARY(MAX)类型存储文件内容,但这种方式不直接利用文件系统,可能会对性能产生影响。总的来说,FILESTREAM是SQL Server提供的一种高效、灵活的文件存储解决...

    SQLServer中如何将一个字段的多个记录值合在一行显示

    SQLServer 中将一个字段的多个记录值合并到一行显示的实现方法 SQL Server 是一种关系型数据库管理系统,具有强大的数据处理能力和存储能力。在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以...

    SqlServer查看表结构

    本篇文章将深入解析“SqlServer查看表结构”的方法,以及如何利用SQL语句来获取详细的表结构信息,这对于数据库管理员(DBA)、数据分析师、软件开发者等专业人士来说尤为关键。 ### SQL Server查看表结构的重要性 ...

    SQL Tuning sqlServer 数据库

    - **临时表和表变量**:在适当的情况下,使用临时表或表变量来优化复杂查询。 5. **存储过程和函数**: - **存储过程的优势**:减少网络传输,提升安全性,封装业务逻辑。 - **函数优化**:考虑函数的执行效率,...

    sql server 行列转换

    ### SQL Server 行转列操作详解 在数据库管理和数据分析领域,数据经常需要按照特定的方式进行组织和呈现。其中,“行列转换”(即行转列或列转行)是一种常见的需求,尤其是在汇总报告、数据透视等场景下尤为重要...

Global site tag (gtag.js) - Google Analytics