在开发中,经常会遇到要吧一行行数据按照某一行进行分组


    1. USE [OA]
    1. GO
    1. /****** Object: StoredProcedure [dbo].[usp_report_GatherDataMsgRpt] Script Date: 12/02/2014 10:42:22 ******/
    1. SET ANSI_NULLS ON
    1. GO
    1. SET QUOTED_IDENTIFIER ON
    1. GO
    1. ALTER PROC [dbo].[usp_report_GatherDataMsgRpt]
    1. @datamsgid int
    1. AS
    1. begin
    1. DECLARE @t_dataPublish_id INT ,@t_dataPublishColumn_id INT , @execSQL VARCHAR(4000),@temSql1 VARCHAR(4000) ,@temSql2 VARCHAR(4000)
    1. ,@columnKey varchar(200)
    1. SELECT @t_dataPublish_id=@datamsgid
    1. SELECT @execSQL='' ,@temSql1='',@temSql2='',@columnKey =''
    1. DECLARE Cur CURSOR
    1. FOR
    1. SELECT t1.id
    1. FROM dbo.t_dataPublishColumn t1
    1. WHERE t1.t_dataPublish_id = @t_dataPublish_id
    1. SELECT @execSQL = 'SELECT '
    1. OPEN Cur
    1. FETCH NEXT FROM Cur INTO @t_dataPublishColumn_id
    1. WHILE @@fetch_status = 0
    1. BEGIN
    1. SELECT @columnKey=''
    1. SELECT
    1. @columnKey =
    1. LTRIM(t2.columnName)
    1. FROM t_dataPublishColumn t2
    1. WHERE t2.id=@t_dataPublishColumn_id
    1. SET @temSql1 = @temSql1 + ',MAX(' + LTRIM(@columnKey) + ') as '+ LTRIM(@columnKey)
    1. SET @temSql2 = @temSql2 + ',CASE WHEN t2.t_dataPublishColumn_id='
    1. + LTRIM(@t_dataPublishColumn_id) + ' then cellValue END '
    1. + LTRIM(@columnKey)
    1. FETCH NEXT FROM Cur INTO @t_dataPublishColumn_id
    1. END
    1. CLOSE Cur
    1. DEALLOCATE Cur
    1. SELECT @execSQL = @execSQL + SUBSTRING(@temSql1,2,LEN(@temSql1)) + ' FROM (
    1. SELECT t2.rownum
    1. ' + @temSql2
    1. + '
    1. FROM t_dataPublishColumn t1,t_dataPublishDetail t2 WHERE t1.id=t2.t_dataPublishColumn_id AND t1.t_dataPublish_id='
    1. + LTRIM(@t_dataPublish_id) + ') x GROUP BY x.rownum
    1. '
    1. PRINT @execSQL
    1. EXEC(@execSQL)
    1. END


sqlserver 对多条数据分组的更多相关文章

  1. SQLServer比较两条数据是否相同

    SQLServer比较两条数据是否相同 直接比较可能会一个一个字段的比较,也可以将多个字段拼成一个串然后比较,这里有个hash值比较的方法,很好用 用法 将需要的比较的column放进去,逗号隔开,只 ...

  2. sqlserver中 多条数据合并成一条数据 (stuff 与 for xml path 连用)

    SQL 列转行,即多行合并成一条   需求:按照分组,将多条记录内容合并成一条,效果如下: 数据库示例: CREATE TABLE [t2]([NID] [bigint] NULL,[district ...

  3. JavaScript如何一次性展示几万条数据

    有一位同事跟大家说他在网上看到一道面试题:“如果后台传给前端几万条数据,前端怎么渲染到页面上?”,如何回答? 于是办公室沸腾了, 同事们讨论开了, 你一言我一语说出自己的方案. 有的说直接循环遍历生成 ...

  4. sql分组(orderBy、GroupBy)获取每组前一(几)条数据

    sql数据库实现分组并取每组的前1(几)条数据 测试数据准备工作: 根据某一个字段分组取最大(小)值所在行的数据: 创建表并且插入数据 ),Val )) , 'a1--a的第一个值') , 'b2b2 ...

  5. sql分组取第一条数据

    sq分组取第一条数据的一个方法: select * from ( select row_number() over(partition by ID order by ID) as rownum , * ...

  6. sqlServer 取每组的前几条数据

    首先的建表语句: ) DROP TABLE [test] CREATE TABLE [test] ( [id] [, ) NOT NULL , [name] [nvarchar] () NULL , ...

  7. sqlserver 将多行数据查询合并为一条数据

    有这样一个需求:表T_FUN_TASK为任务表,有字段(TASKID,TASKNAME),表T_FUN_LOGBOOK为日志表,有字段(LOGID,TASKID,LOGDATE),一个任务可持续多天, ...

  8. SQL Server分组查询某最大值的整条数据(包含linq写法)

    想实现如下效果,就是分组后时间最大的那一条数据: 1.SQL SELECT * FROM ( SELECT * , ROW_NUMBER() OVER ( PARTITION BY RIP_GUID ...

  9. mssql sqlserver 使用sql脚本获取群组后,按时间排序(asc)第一条数据的方法分享

    摘要: 下文讲述使用sql脚本,获取群组后记录的第一条数据业务场景说明: 学校教务处要求统计: 每次作业,最早提交的学生名单下文通过举例的方式,记录此次脚本编写方法,方便以后备查,如下所示: 实现思路 ...

随机推荐

  1. java之Math

    一.Math类 java.lang.Math提供了一系列静态方法用于科学计算:其方法的參数和返回值类型一般为double型. abs     绝对值 acos,asin,atan,cos,sin,ta ...

  2. 〖Linux〗Ubuntu13.10,在终端打开gvim提示“GLib-GObject-WARNING”的临时解决办法

    今天刚刚升级至Ubuntu13.10,在终端打开gvim时提示一些出错信息,不是很雅观: (gvim:): GLib-GObject-WARNING **: Attempt to add proper ...

  3. 通过jdbc使用PreparedStatement,提升性能,防止sql注入

    为什么要使用PreparedStatement? 一.通过PreparedStatement提升性能 Statement主要用于执行静态SQL语句,即内容固定不变的SQL语句.Statement每执行 ...

  4. 文本挖掘之文本聚类(MapReduce)

    刘 勇  Email:lyssym@sina.com 简介 针对大数量的文本数据,采用单线程处理时,一方面消耗较长处理时间,另一方面对大量数据的I/O操作也会消耗较长处理时间,同时对内存空间的消耗也是 ...

  5. Drupal Form问题汇总

    问:如何校验和提交表单?答:Drupal允许定义默认的表单校验处理函数和提交处理函数. function practice_demo_form($form, &$form_state) { . ...

  6. Linux磁盘分区及链接文件的特点

    系统分区 传统的分区fdisk 最大支持2T的硬盘分区 对存储,多分区使用的parted 主分区:最多只能有4个 扩展分区 最多只能有1个 主分区加扩展分区最多有4个 不能写入数据,只能包含逻辑分区 ...

  7. rlwrap插件,实现sqlplus上下翻页

    oracle在Linux下,sqlplus中不能上下翻,最主要我经常打错字!嘿嘿 01.下载 RPM  :http://rpmfind.net/linux/rpm2html/search.php?qu ...

  8. 基于 Vue BootStrap的迷你Chrome插件

    代码地址如下:http://www.demodashi.com/demo/14306.html 安装 安装 Visual Studio Code 和Chrome, 自行FQ 详细安装这里略过 安装包管 ...

  9. 兼顾pc和移动端的textarea字数监控的实现方法

    概述 pc端移动端中文本框监控字数的功能的一种较为简单的实现,考虑到安卓和IOS输入法输入过程中是否触发keyup的差异.利用监听compositionstart判断是否开启了输入法.从而实现体验较为 ...

  10. Geeks Union-Find Algorithm Union By Rank and Path Compression 图环算法

    相同是查找一个图是否有环的算法,可是这个算法非常牛逼,构造树的时候能够达到O(lgn)时间效率.n代表顶点数 原因是依据须要缩减了树的高度,也叫压缩路径(Path compression),名字非常高 ...