SQL SERVER 实现转置功能
来源:互联网 发布:手机蓝牙打印机软件 编辑:程序博客网 时间:2024/06/05 09:57
--1生成测试表
CREATE TABLE [dbo].[TABLEA](
[WO] [varchar](50) NOT NULL,
[ColoumnName] [varchar](50) NULL,
[ColoumnValue] [varchar](50) NULL,
)
insert into [TABLEA]
values('PRD_100000048','SN','SN001')
insert into [TABLEA]
values('PRD_100000048','PO','PO001')
insert into [TABLEA]
values('PRD_100000048','Version','VersionO001')
select * from [TABLEA]
--2.实现转置
IF(OBJECT_ID(N'tempdb..#TABLEA') is NOT NULL) drop table #TABLEA
IF(OBJECT_ID(N'tempdb..##TABLEA') is NOT NULL) drop table ##TABLEA
DECLARE @WO varchar(50)
set @WO='PRD_100000048'
DECLARE @ColumnList varchar(5000)
SELECT @ColumnList=STUFF(( SELECT ',' + 'MAX(case when ColoumnName='''+ColoumnName+''' then ColoumnValue end) as '''+ColoumnName+''' '
FROM ( SELECT distinct ColoumnName FROM dbo.[TABLEA]
where wo=@WO
) T1
FOR
XML PATH('')
), 1, 1, '')
declare @SQL varchar(max)
set @SQL='
select wo,
'+@ColumnList+'
into ##TABLEA
FROM [TABLEA] where wo='''+@WO+'''
group by wo
'
exec(@SQL)
select * into #TABLEA from ##TABLEA
IF(OBJECT_ID(N'tempdb..##TABLEA') is NOT NULL) drop table ##TABLEA --全局临时表不能长时间存在,及时删除
--3.得到可利用的临时表
select * from #TABLEA
CREATE TABLE [dbo].[TABLEA](
[WO] [varchar](50) NOT NULL,
[ColoumnName] [varchar](50) NULL,
[ColoumnValue] [varchar](50) NULL,
)
insert into [TABLEA]
values('PRD_100000048','SN','SN001')
insert into [TABLEA]
values('PRD_100000048','PO','PO001')
insert into [TABLEA]
values('PRD_100000048','Version','VersionO001')
select * from [TABLEA]
--2.实现转置
IF(OBJECT_ID(N'tempdb..#TABLEA') is NOT NULL) drop table #TABLEA
IF(OBJECT_ID(N'tempdb..##TABLEA') is NOT NULL) drop table ##TABLEA
DECLARE @WO varchar(50)
set @WO='PRD_100000048'
DECLARE @ColumnList varchar(5000)
SELECT @ColumnList=STUFF(( SELECT ',' + 'MAX(case when ColoumnName='''+ColoumnName+''' then ColoumnValue end) as '''+ColoumnName+''' '
FROM ( SELECT distinct ColoumnName FROM dbo.[TABLEA]
where wo=@WO
) T1
FOR
XML PATH('')
), 1, 1, '')
declare @SQL varchar(max)
set @SQL='
select wo,
'+@ColumnList+'
into ##TABLEA
FROM [TABLEA] where wo='''+@WO+'''
group by wo
'
exec(@SQL)
select * into #TABLEA from ##TABLEA
IF(OBJECT_ID(N'tempdb..##TABLEA') is NOT NULL) drop table ##TABLEA --全局临时表不能长时间存在,及时删除
--3.得到可利用的临时表
select * from #TABLEA
0 0
- SQL SERVER 实现转置功能
- SQL Server实现split功能
- sql server实现循环功能
- SQL server实现split功能的函数
- SQL Server 2005 镜像功能实现
- SQL Server用行号实现分页功能
- SQL Server实现类似split功能
- SQL Server镜像功能完全实现
- 在SQL SErver中实现数组功能
- SQL Server特殊功能实现 多行转一行
- SQL SERVER实现基本的分页功能
- [SQL Server]分页功能的实现
- SQL Server Browser的功能【转】
- SQL Server Browser的功能【转】
- SQL SERVER常用功能
- Sql Server常用功能
- SQL server服务功能
- SQL Server 2008 通过配置数据库邮件实现发送邮件功能(转)
- Java类型系统
- SVN 本地目录被手动删除后,cleanup时提示删除的目录被locked.
- 基础练习 2n皇后问题 dfs
- Unity传递复杂Json数据
- android 读取WebView缓存及清理WebView缓存
- SQL SERVER 实现转置功能
- Win10虚拟机安装Linux(Hyper-V+ubuntu)
- 体育竞技游戏的团队AI
- linux批量替换文件内容3种方法(perl,sed,shell)
- ZooKeeper此例简单介绍基于docker的zookeeper安装与集群搭建
- C#开发人员应该知道的13件事情
- Tomcat系列- tomcat如何避免遭遇ClassNotFoundException
- CSMA/CD和CSMA/CA详解
- java提高篇(二)-----理解java的三大特性之继承