--创建一个临时表用来存储数据
create table #tmp_SNValue_Table (FieldName nvarchar(20), [Value] nvarchar(max)) insert into #tmp_SNValue_Table
select 'DDUDF01','123456789012345'
insert into #tmp_SNValue_Table
select 'DDUDF01','123456789012346'
insert into #tmp_SNValue_Table
select 'DDUDF02','123456789012347' select * from #tmp_SNValue_Table

目前的效果:

--定义一个变量存储SQL语句
declare @ls_TSQL nvarchar(max) ='' --用来存储需要查询出来的列(column).
DECLARE @ls_FieldName NVARCHAR(100) --动态列. (ColumnName1,ColumnName2)
SELECT @ls_FieldName=ISNULL(@ls_FieldName+',','')+ QUOTENAME(FieldName) FROM #tmp_SNValue_Table GROUP BY FieldName --查询并且 行转列(包含空列, 不规则的数目)
set @ls_TSQL = @ls_TSQL+ '
SELECT '+@ls_FieldName+' FROM (
SELECT FieldName,value,row_number() over (partition by FieldName ORDER BY FieldName ASC) rowno
FROM #tmp_SNValue_Table) r PIVOT(max(value) FOR FieldName IN('+@ls_FieldName+') )g '
print @ls_TSQL
exec(@ls_TSQL)

  

想要的效果(只是做查询, 不做动态insert)

如果需要动态列插入

create table #tmp_Sca_Pac_Dtl(
DDUDF01 nvarchar(100) null,
DDUDF02 nvarchar(100) null,
DDUDF03 nvarchar(100) null,
DDUDF04 nvarchar(100) null,
DDUDF05 nvarchar(100) null,
DDUDF06 nvarchar(100) null,
DDUDF07 nvarchar(100) null,
DDUDF08 nvarchar(100) null,
DDUDF09 nvarchar(100) null,
DDUDF10 nvarchar(100) null,
DDUDF11 nvarchar(100) null,
DDUDF12 nvarchar(100) null,
DDUDF13 nvarchar(100) null,
DDUDF14 nvarchar(100) null,
DDUDF15 nvarchar(100) null,
DDUDF16 nvarchar(100) null,
DDUDF17 nvarchar(100) null,
DDUDF18 nvarchar(100) null,
DDUDF19 nvarchar(100) null,
DDUDF20 nvarchar(100) null
) declare @ls_TSQL nvarchar(max) =''
DECLARE @ls_FieldName NVARCHAR(100)
SELECT @ls_FieldName=ISNULL(@ls_FieldName+',','')+ QUOTENAME(FieldName) FROM #tmp_SNValue_Table GROUP BY FieldName
--动态插入另一个Temp table里面
set @ls_TSQL = 'insert into #tmp_Sca_Pac_Dtl ('+@ls_FieldName+')' --set @ls_TSQL = 'insert into #tmp_Sca_Pac_Dtl ('+@ls_FieldName+')'
set @ls_TSQL = @ls_TSQL+ '
SELECT '+@ls_FieldName+' FROM (
SELECT FieldName,value,row_number() over (partition by FieldName ORDER BY FieldName ASC) rowno
FROM #tmp_SNValue_Table) r PIVOT(max(value) FOR FieldName IN('+@ls_FieldName+') )g '
print @ls_TSQL
exec(@ls_TSQL)
select * from #tmp_Sca_Pac_Dtl

 效果

SQL 行转列(列的值不规则的数目)的更多相关文章

  1. sql server显示某一列中有重复值的行

    sql server查询一张表 ,显示某一列中有重复值的行,可以这样写: Select * From 表名 where 列名 in(Select 列名 From Table group by 列名 h ...

  2. Ms sql行转列。汇总

    SQL行转列汇总 PIVOT 用于将列值旋转为列名(即行转列),在 SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT 的一般语法是:PIVOT(聚合函数(列) FOR 列 ...

  3. SQL行转列汇总

    PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P ...

  4. sql 行转列总结

    原文:sql 行转列总结 PIVOT UNPIVOT的用法 PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PI ...

  5. SQL Server 行转列,列转行。多行转成一列

    一.多行转成一列(并以","隔开) 表名:A 表数据: 想要的查询结果: 查询语句: SELECT name , value = ( STUFF(( SELECT ',' + va ...

  6. SQL行转列 (及EAV模型获取数据)

    参考文章: http://www.williamsang.com/archives/1508.html 情景简介 学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当作列. ...

  7. SQL行转列,列转行

    SQL 行转列,列转行 行列转换在做报表分析时还是经常会遇到的,今天就说一下如何实现行列转换吧. 行列转换就是如下图所示两种展示形式的互相转换 行转列 假如我们有下表: SELECT * FROM s ...

  8. SQL 行转列和列转行

    SQL 行转列和列转行 行列互转,是一个经常遇到的需求.实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现. 在读了技术内幕那一节后,虽说这些解决方案早就用过 ...

  9. 获取DataTable选择第一行某一列值

    数据源是一个DataTable,现在我们需要获取这个DataTable的第一行第一列的值.先准备一个数据集,创建一个DataTable,并填充数据: source code: using System ...

随机推荐

  1. 常用DOS命令及编程软件fa

    1.常用的dos命令(应用) 在接触集成开发环境之前,我们需要使用命令行窗口对Java程序进行编译和运行,所以需要知道dos命令. 打开命令行窗口的方式:win + r打开运行窗口对java程序进行编 ...

  2. 在kali2.0中使用msf图形界面可能会遇到的问题

    kali版本:Linux kali 4.9.0-kali3-amd64 #1 SMP Debian 4.9.18-1kali1 (2017-04-04) x86_64 GNU/Linux 编写日期:2 ...

  3. springboot笔记之helloworld

    开发工具:IDEA 2019 springboot版本:2.1.9 一.springboot2.x VS 1.x 基础环境升级 最低 JDK 8,支持 JDK 9,不再支持 Java 6 和 7 依赖 ...

  4. 一篇文章看懂Java并发和线程安全(一)

    一.前言 长久以来,一直想剖析一下Java线程安全的本质,但是苦于有些微观的点想不明白,便搁置了下来,前段时间慢慢想明白了,便把所有的点串联起来,趁着思路清晰,整理成这样一篇文章. 二.导读 1.为什 ...

  5. opencv滤镜-使用opencv实现各种图像滤镜特效

    图像处理-滤镜 链接:https://mangoroom.cn/opencv/image-processing-filter.html opencv滤镜-实现晕影vignetting效果 链接:htt ...

  6. ElasticSearch基础知识讲解

    第一节 ElasticSearch概述 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfull web接口.ElasticSea ...

  7. centos 6.x 编译安装 pgsql 9.6

    文章结构如下: 一. 环境配置 1. 配置防火墙 查看IPTABLES 当前状态与关闭过程 chkconfig --list|grep iptables 关闭iptables service ipta ...

  8. 《一头扎进》系列之Python+Selenium自动化测试框架实战篇6 - 价值好几K的框架,呦!这个框架还真牛叉哦!!!

    1. 简介 本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去.用addTest()方法来加载我们测试用例到 ...

  9. python实现建造者模式

    python实现建造者模式 前言 无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮.方向盘.发送机等各种部件.而对于大多数用户而言,无须知道这些部件的 ...

  10. 2019-11-29-win10-uwp-轻量级-MVVM-框架入门-2.1.5.3199

    title author date CreateTime categories win10 uwp 轻量级 MVVM 框架入门 2.1.5.3199 lindexi 2019-11-29 10:16: ...