mssql 动态行转列。
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 动态行转列。的更多相关文章
- [MSSQL]採用pivot函数实现动态行转列
环境要求:2005+ 在日常需求中常常会有行转列的事情需求处理.假设不是动态的行,那么我们能够採取case when 罗列处理. 在sql 2005曾经处理动态行或列的时候,通常採用拼接字符串的方法处 ...
- 中等难度SQL语句(存储过程,分页,拼接字段、游标,日期类型转换,动态行转列,视图)汇总
一.创建存储过程 if Exists(select name from sysobjects where NAME = 'sp1LoginUser' and type='P')drop procedu ...
- 【转】MySQL存储过程中使用动态行转列
MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...
- mybatis 动态行转列
SELECT user_name , MAX(CASE course WHEN '数学' THEN score END ) 数学, MAX(CASE course WHEN '语文' THEN sco ...
- MySQL存储过程的动态行转列
MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...
- MySQL 行转列 -》动态行转列 -》动态行转列带计算
Pivot Table Using MySQL - A Complete Guide | WebDevZoomhttp://webdevzoom.com/pivot-table-using-mysql ...
- 在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列)
原文:在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- 在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题)
原文:在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉 ...
- 在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名)
原文:在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
随机推荐
- C++ Primer----智能指针类 2
指针带给了 C++巨大的灵活性,然而同样也带来无数的问题,悬挂指针,内存泄漏等. int *pInt = new int(1); // Do not forget delete pInt; 智能指针就 ...
- 【转】Lua coroutine 不一样的多线程编程思路
Lua coroutine 不一样的多线程编程思路 Sunday, Apr 26th, 2009 by Tim | Tags: coroutine, Lua 上周末开始看<Lua程序设计> ...
- 网络编程-socket
本节内容: 一:TCP/IP:Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议.即通讯协议.是主机接入互联网以及互联网中两台 ...
- 去掉EditPlus自动备份bak文件
用EditPlus编辑文件是总是自动生成一个.bak文件. 其实想去掉EditPlus的自动备份也简单,方法如下: 打开菜单栏上的:工具->参数设置->文件 去掉“保存时创建备份文件”前的 ...
- Java常用正则表达式验证工具类RegexUtils.java
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexUtils{ /** * 正则表达式 ...
- Do It Wrong, Get It Right
Do It Wrong, Get It Right Time Limit: 5000ms, Special Time Limit:12500ms, Memory Limit:65536KB Total ...
- hdu4666 Hyperspace ——曼哈顿距离
link:http://acm.hdu.edu.cn/showproblem.php?pid=4666 这题学会了怎么处理曼哈顿距离. 比如维数是k,那么每个点有2^k个状态,求出在每个状态下,所有点 ...
- turn.js 图书翻页效果
今天用turn.js 做图书的翻页效果遇到问题: 图片路径总是出错 调了一天,总算调出来了 我用的thinkphp,其他的不知道是不是一样 三 个地方要改动: 1.后台查出地址 注意的地方:1.地址要 ...
- php部分---一个分页类、用法
1.分页类 <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 privat ...
- LeetCode() Min Stack 不知道哪里不对,留待。
class MinStack { public: MinStack() { coll.resize(2); } void push(int x) { if(index == coll.size()-1 ...