create table #a (a int , b char(4))
insert into #a select 1,'张三'
insert into #a select 2,'李四'
insert into #a select 3,'王五'
select * from #a
a b
----------- ----
1 张三
2 李四
3 王五
(3 行受影响) --行转列,步骤:''+张三+],[+王五+],[+李四
declare @sql varchar(100)
select @sql=isnull(@sql+'],[','')+b from #a
select @sql='['+@sql+']'
select @sql as 结果1
go
结果1
----------------------------------------------------------------------------------------------------
[张三],[李四],[王五] (1 行受影响) --结果为NULL,所以用ISNULL
declare @sql varchar(100)
select @sql=@sql+b from #a
select @sql NULL
----------------------------------------------------------------------------------------------------
NULL (1 行受影响) --结果,同上
declare @sql varchar(100)
set @sql=''
select @sql=@sql+'],['+b from #a
select @sql=right(@sql,len(@sql)-2)+']'
select @sql as 结果2
go 结果2
----------------------------------------------------------------------------------------------------
[张三],[李四],[王五]
(1 行受影响) --结果,同上
declare @sql varchar(100)
set @sql=''
select @sql=stuff((select '],['+b from #a for xml path('')),1,2,'') +']'
select @sql as 结果3
go 结果3
----------------------------------------------------------------------------------------------------
[张三],[李四],[王五]
(1 行受影响) --结果,同上。
declare @sql varchar(8000)
select @sql=coalesce(@sql+'],[','')+b from #a
select @sql='['+@sql+']'
select @sql as 结果4
go 结果4
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[张三],[李四],[王五]
(1 行受影响) --思路一样都是列行互转,结果不一样。
declare @b varchar(100)
declare @c varchar(100)
set @c='select * from (select b from #a ) as e pivot (max(b) for b in ([张三],[李四],[王五])) as c'
exec(@c) 张三 李四 王五
---- ---- ----
张三 李四 王五
(1 行受影响)
create table #a
(
id char(2) ,
a char(2),
b char(2) )
insert into #a values('','','')
insert into #a values('','','')
insert into #a values('','','')
insert into #a values('','','')
insert into #a values('','','') select a.id,
[a]=stuff((select ',' +b from #a as a1 where a1.id=a.id FOR XML PATH('')),1,1,' ' )
,b
from #a a
group by a.id,b; drop table #a;

结果:

id a     b
----------------
1 3,3,3 3
2 5,5 5 (2 行受影响) )

mssql 动态行转列。的更多相关文章

  1. [MSSQL]採用pivot函数实现动态行转列

    环境要求:2005+ 在日常需求中常常会有行转列的事情需求处理.假设不是动态的行,那么我们能够採取case when 罗列处理. 在sql 2005曾经处理动态行或列的时候,通常採用拼接字符串的方法处 ...

  2. 中等难度SQL语句(存储过程,分页,拼接字段、游标,日期类型转换,动态行转列,视图)汇总

    一.创建存储过程 if Exists(select name from sysobjects where NAME = 'sp1LoginUser' and type='P')drop procedu ...

  3. 【转】MySQL存储过程中使用动态行转列

    MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...

  4. mybatis 动态行转列

    SELECT user_name , MAX(CASE course WHEN '数学' THEN score END ) 数学, MAX(CASE course WHEN '语文' THEN sco ...

  5. MySQL存储过程的动态行转列

    MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...

  6. MySQL 行转列 -》动态行转列 -》动态行转列带计算

    Pivot Table Using MySQL - A Complete Guide | WebDevZoomhttp://webdevzoom.com/pivot-table-using-mysql ...

  7. 在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列)

    原文:在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  8. 在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题)

    原文:在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉 ...

  9. 在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名)

    原文:在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

随机推荐

  1. brute-force search

    #include <pcl/search/brute_force.h> #include <pcl/common/common.h> #include <iostream ...

  2. java中的static关键词

    以下来自:http://www.cnblogs.com/codc-5117/archive/2011/12/04/2275298.html Static基本规则:             (1)一个类 ...

  3. RouteArea中AreaPrefix(Area 前缀)的使用

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  4. JDK源码解读之toUnsignedString

    我们知道,所有整数都是通过二进制编码的形式存储在内存中的.比如32位的整数,最高位是符号位,0代表正数,1代表负数. 那么怎么才能够将整数的二进制编码形式打印出来呢?Integer类提供了一个公有静态 ...

  5. POJ 3067 Japan(树状数组)

                                                                                  Japan   Time Limit: 10 ...

  6. HDU-2778 DNA Sequence(AC自动机)

    题目大意:统计模式串出现的次数. 题目分析:模板题. 代码如下: # include<iostream> # include<cstdio> # include<queu ...

  7. 1、C#入门第一课

    C# 读作C Sharp,所以程序文件的扩展名为.cs 新建项目-窗体应用程序 所谓的Visual C#就是指的可视化编程,主要在设计窗口布置好自己的控件(一些具有一定功能的小部件,例如如可以点击的按 ...

  8. Android学习三:线程操作

    作为Android开发的组成部分,多线程的作用举足轻重,先来说说应用场景 1多线程使用场景 1.1正常使用中,经常有子线程来更新界面UI的需求,但是安卓不允许子线程更新UI 使用子线程处理UI,若线程 ...

  9. 10-Java 网络通信

    (一) Java中的XML操作 1.XML数据格式简介: (1)XML,即可扩展标记语言(Extensible Markup Language),标准通用标记语言的子集,一种用于标记电子文件使其具有结 ...

  10. osx 文本编辑工具下载地址Sublime Text 3

    下载地址: http://www.sublimetext.com/3 Sublime Text 是一个代码编辑器(Sublime Text 3是收费软件,但可以无限期试用),也是HTML和散文先进的文 ...