通过sql的stuff 把一列几行的记录拼接在一行一个字段

---通过sql的stuff 把一列几行的记录拼接在一行一个字段

select FID,a.FCustomerID as 工地ID
        , 应验收节点 = (stuff((select ‘,‘ + isnull(t2.FName,‘‘) from MD_ProjectPlanEntry t1
                            inner join MD_BaseData6_L t2 on t1.FGCJDXM=t2.FID
                            where t1.FID=a.FID and convert(varchar(6),t1.FPEDATE,112)<=convert(varchar(6),getdate(),112)
                            and FAEDATE is null
                        for xml path(‘‘)),1,1,‘‘))
        , 实际验收节点 = (stuff((select ‘,‘ + t2.FName from MD_ProjectPlanEntry t1
                            inner join MD_BaseData6_L t2 on t1.FGCJDXM=t2.FID
                            where t1.FID=a.FID and convert(varchar(6),FAEDATE,112)=convert(varchar(6),getdate(),112)
                        for xml path(‘‘)),1,1,‘‘))
        from MD_ProjectPlan a
       group by a.FID ,a.FCustomerID

原文地址:https://www.cnblogs.com/ggxiaomo/p/12291382.html

时间: 2024-08-29 22:25:56

通过sql的stuff 把一列几行的记录拼接在一行一个字段的相关文章

[MySQL] 行列转换变化各种方法实现总结(行变列报表统计、列变行数据记录统计等)

前言: mysql行列变化,最难的就是将多个列变成多行,使用的比较多的是统计学中行变列,列变行,没有找到现成的函数或者语句,所以自己写了存储过程,使用动态sql来实现,应用业务场景,用户每个月都有使用记录数录入一张表,一个月一个字段,所以表的字段是动态增长的,现在需要实时统计当前用户使用的总数量,如果你知道有多少个字段,那么可以用select c1+c2+c3+-. From tbname where tid='111';来实现,但是关键是这个都是动态的,所以在应用程序端来实现确实不适宜,可以放

SQL Server 自定义函数(1)把某一列多行的值拼接成一个字符串

DECLARE @resultstr VARCHAR(8000) SET @resultstr='' SELECT @resultstr=@resultstr+'|'+[BaseImage] FROM dbo.life_fc PRINT @resultstr

SQL SERVER2000将多行查询结果拼接到一行数据

处理前的查询结果如上图: 通过借助SQL变量的定义 DECLARE @Scope varchar(1000) DECLARE @Num int SET @Scope='' SET @Num = 1 SELECT @Scope=@Scope+convert(varchar(8),@Num)+'.'+DescScope+ DescOper+';', @Num = @Num+1 From fuel_contractQualityNew Where ContractID='012009000100' S

关于SQL Server将一列的多行内容拼接成一行的问题讨论(转载)

说明:本文仅供分享,版权属于原作者. 昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes  ep_name AAA         企业1 AAA         企业2 AAA         企业3 BBB         企业4 BBB         企业5 我想把这个表变成如下格式: ep_classes      ep_name AAA           

Sql Server中的标识列(自增长字段)

一.标识列的定义以及特点 SQL Server中的标识列又称标识符列,习惯上又叫自增列.该种列具有以下三种特点: 1.列的数据类型为不带小数的数值类型2.在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值3.列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列. 由于以上特点,使得标识列在数据库的设计中得到广泛的使用. 二.标识列的组成创建一个标识列,通常要指定三个内容:1.类型(type)在SQL Server 2000中,标识列类型必须是数值类型,如下:de

SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段

一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL,动态列字段: 方法三:使用PIVOT关系运算符,静态列字段: 方法四:使用PIVOT关系运算符,动态列字段: 扩展阅读一:参数化表名.分组列.行转列字段.字段值: 扩展阅读二:在前面的基础上加入条件过滤: 参考文献(References) 二.背景(Contexts) 其实行转列并不是一个什么新鲜的

解读SQL Server 2014可更新列存储索引——存储机制

概述 SQL Server 2014被号称是微软数据库的一个革命性版本,其性能的提升的幅度是有史以来之最. 可更新的列存储索引作为SQL Server 2014的一个关键功能之一,在提升数据库的查询性能方面贡献非常突出.据微软统计,在面向OLAP查询统计类系统中,相比其他SQL传统版本的数据库,报表查询的性能最大可提升上十倍. 下面我们从存储的角度来了解下SQL Server 2014的可更新列存储索引. 什么是列存储 微软为了提升SQL Server的查询性能,更好的支持大数据分析,早在SQL

SQL Server 2016:内存列存储索引

作者 Jonathan Allen,译者 谢丽 SQL Server 2016的一项新特性是可以在"内存优化表(Memory Optimized Table)"上添加"列存储索引(Columnstore Index)".要理解这是什么意思,我们应该首先解释术语列存储索引和内存优化表.列存储索引是一种按照列而不是行组织数据的索引.每个数据块只存储一个列的数据,最多包含100万行.因此,如果数据为5列1000万行,那么就需要存储在50个数据块中.当只查询部分列时,这种数

Sql 行转换为列 以及列转换为行的心得

这是 创建数据库的脚本文件 CREATE TABLE [dbo].[stu]( [学号] [nvarchar](255) NOT NULL, [姓名] [nvarchar](255) NULL, [性别] [nvarchar](255) NULL, [专业] [nvarchar](255) NULL, [院系] [nvarchar](255) NULL ) ON [PRIMARY] GO INSERT [dbo].[stu] ([学号], [姓名], [性别], [专业], [院系]) VALU