SQL 多条记录分组合成一条数据

摘要:
要求:1.消除回车空白。

要求 :1.回车空格消除。

2.进展情况相同的要去重

3.方括号内容要消除

4.按 年、月、任务编码 合并成一条数据

SQL 多条记录分组合成一条数据第1张

--创建该函数 nsc_StrSplit 传一个值 并按‘]’分隔成多条记录 存到一个表里

CREATE FUNCTION [dbo].[nsc_StrSplit] ( @str VARCHAR(4000) )
RETURNS @tableName TABLE ( str2table VARCHAR(4000) )
AS
    BEGIN
        --SET @str = @str + ','
        DECLARE @insertStr VARCHAR(4000) --截取后的第一个字符串
        DECLARE @newstr VARCHAR(4000) --截取第一个字符串后剩余的字符串
        SET @insertStr = LEFT(@str, CHARINDEX(']', @str) - 1)
        SET @newstr = STUFF(@str, 1, CHARINDEX(']', @str), '')
        INSERT  @tableName
        VALUES  ( @insertStr )
        WHILE ( LEN(@newstr) > 0 )
            BEGIN
                SET @insertStr = LEFT(@newstr, CHARINDEX(']', @newstr) - 1)
                INSERT  @tableName
                VALUES  ( @insertStr )
                SET @newstr = STUFF(@newstr, 1, CHARINDEX(']', @newstr), '')
            END
        RETURN
    END

GO
create table #jzztmx(
id int identity(1,1),
iyear numeric(20, 0),
imonth numeric(20, 0),
rwbm nvarchar(500),
ggjzqk nvarchar(4000)
)

insert into #jzztmx
--2.将【】内容删除 再去重
select distinct iyear,imonth,rwbm,substring(mss,0,CHARINDEX('[',mss) ) ggjzqk   
from (
--1.将进展状态里按】分割成多条数据存到一个表里 并消除回车换行,
	SELECT  iyear,imonth,rwbm,replace(replace(str2table,CHAR(13),''),CHAR(10),'') mss
FROM    (select iyear,gjyf imonth,rwbm,jzqk from NSC_A8_shijigenjin   where (sfsc !='删除' or sfsc is null)  and iyear = @iyear and gjyf <=@imonth ) a  OUTER  APPLY  nsc_StrSplit(a.jzqk)
) a  order by rwbm


--按年月任务编码 合成一条记录
select iyear,imonth,rwbm,
jzqk=(
		(select  ltrim(ggjzqk) +'' from #jzztmx where iyear=a.iyear and imonth=a.imonth and rwbm =a.rwbm 
		  for xml path(''))
)  into #jzztzx
from #jzztmx a group by iyear,imonth,rwbm

结果:

SQL 多条记录分组合成一条数据第2张  

免责声明:文章转载自《SQL 多条记录分组合成一条数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java绘图(基于Graphics2D)UML类图学习总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

KDD MIMIC-IV与MIMIC-III的区别

MIMIC-IV MIMIC-IV将MIMIC-III的数据表模块化划分,反应各个模块的数据的独立性和不同本质。包含2008年至2018年(MIMIC-III:2001年至2012年)之间进入重症监护病房的数据,增加了急救中心和胸部x光片数据。 Website | Code | Doc 模块化 core - admissions/patients/tra...

写一个自动解析 ios crash 日志的脚本(python)

符号表是什么 符号表就是指在Xcode项目编译后,在编译生成的二进制文件.app的同级目录下生成的同名的.dSYM文件。 .dSYM文件其实是一个目录,在子目录中包含了一个16进制的保存函数地址映射信息的中转文件,所有Debug的symbols都在这个文件中(包括文件名、函数名、行号等),所以也称之为调试符号信息文件。 一般地,Xcode项目每次编译后,都...

项目字典表设计

系统字典表,一半涉及两张表:字典1:n字典项。是一对多的关系 字典表: 字典项表: 如,消息类型,在字典表就是 在字典项对应的多条: 字典表sql: CREATE TABLE `sys_dict` ( `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,...

mybatis批量增、删、改(更新)操作oracle和mysql批量写法小记

前言:用mybatis也好几年了,mybatis在批量的增删操作也写起来也是比较简单的,只有批量更新这一块是特别坑,特此记录。注:本文主要用来记录oracle和mysql数据库在使用mybatis的情况下批量增、删、改(更新)的常用写法 一、批量插入1、oracle写法: <insert parameterType="cc.eguid.Zaixcs"...

SQL Server日期与字符串之间的转换

一、日期转换为字符串、日期格式 1、使用函数CONVERT: CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) 2、参数 expression :是任何有效的 sql 表达式。。 data_type:目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用...

Infobright数据库使用

最近公司要做一个用户访问日志记录统计分析的功能,需要记录日志,但是公司的产品一天大概产生百万级的日志信息, 本身日志记录信息就比较固化和简单(基本不会存在改动),平时没有什么用,就是在统计分析时需要查用一下,另外日志需要长期存储不删除! 于是问题的难点是:如何存储大量的日志信息和在此基础上做查询分析。 日志量:1天100万,一个月就是3000万,数据量大,...