`
wsql
  • 浏览: 11783852 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

MSSQL 使用临时表实现字符串合并处理

Go 
阅读更多

-->Title:Generating test data

-->Author:wufeng4552

-->Date :2009-09-30 15:16:26

if object_id('tb')is not null drop table tb

go

CREATE TABLE tb(col1 varchar(10),col2 int)

INSERT tb SELECT 'a',null

UNION ALL SELECT 'a',null

UNION ALL SELECT 'b',null

UNION ALL SELECT 'b',null

declare @col1 varchar(10)

declare @col2 int

update tb set @col2=case when @col1=col1 then @col2+1 else 1 end,

@col1=col1,col2=@col2

--每组 <=2 的合并

select col1,

col2=ltrim(min(col2))+case when count(*)=1 then ''

else ','+ltrim(max(col2)) end

from tb group by col1

/*

col1 col2

---------- -------------------------

a 1,2

b 1,2

*/

--每组 <=3 的合并

insert tb select 'b',3

select col1,

col2=CAST(MIN(col2) as varchar)

+CASE

WHEN COUNT(*)=3 THEN ','

+CAST((SELECT col2 FROM tb WHERE col1=a.col1 AND col2 NOT IN(MAX(a.col2),MIN(a.col2))) as varchar)

ELSE ''

END

+CASE

WHEN COUNT(*)>=2 THEN ','+CAST(MAX(col2) as varchar)

ELSE ''

END

from tb a group by col1

/*

col1 col2

---------- ---------------------

a 1,2

b 1,2,3

*/

if object_id('tempdb..#')is not null drop table #

go

select col1,

ltrim(col2)col2

into # from tb order by col1,col2

declare @col1 varchar(10)

declare @col2 varchar(20)

update # set @col2=case when @col1=col1 then @col2+','+col2 else col2 end,

@col1=col1,

col2=@col2

go

select col1,

max(col2)col2

from # group by col1

/*

col1 col2

---------- ------------

a 1,2

b 1,2,3

*/

分享到:
评论

相关推荐

    MySQL 5.1中文手冊

    10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符集和校对 10.3.7. 字符串文字字符集和校对 10.3.8. 在SQL语句中使用COLLATE 10.3.9. COLLATE子句优先 10.3.10. ...

    MySQL 5.1参考手册

    10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符集和校对 10.3.7. 字符串文字字符集和校对 10.3.8. 在SQL语句中使用COLLATE 10.3.9. COLLATE子句优先 10.3.10. ...

    MySQL 5.1官方简体中文参考手册

    10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符集和校对 10.3.7. 字符串文字字符集和校对 10.3.8. 在SQL语句中使用COLLATE 10.3.9. COLLATE子句优先 10.3.10. ...

    MySQL 5.1参考手册中文版

    10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符集和校对 10.3.7. 字符串文字字符集和校对 10.3.8. 在SQL语句中使用COLLATE 10.3.9. COLLATE子句优先 10.3.10...

    MySQL 5.1参考手册 (中文版)

    10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符集和校对 10.3.7. 字符串文字字符集和校对 10.3.8. 在SQL语句中使用COLLATE 10.3.9. COLLATE子句优先 10.3.10. ...

    MYSQL中文手册

    10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符集和校对 10.3.7. 字符串文字字符集和校对 10.3.8. 在SQL语句中使用COLLATE 10.3.9. COLLATE子句优先 10.3.10...

    mysql5.1中文手册

    表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符集和校对 10.3.7. 字符串文字字符集和校对 10.3.8. 在SQL语句中使用COLLATE 10.3.9. COLLATE子句优先 ...

    mysql官方中文参考手册

    10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符集和校对 10.3.7. 字符串文字字符集和校对 10.3.8. 在SQL语句中使用COLLATE 10.3.9. COLLATE子句优先 10.3.10. ...

    MySQL5.1参考手册官方简体中文版

    10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符集和校对 10.3.7. 字符串文字字符集和校对 10.3.8. 在SQL语句中使用COLLATE 10.3.9. COLLATE子句优先 10.3.10. ...

    经典SQL脚本大全

    │ │ 3.3 各种字符串合并处理示例.sql │ │ 3.4.1 分段截取函数.sql │ │ 3.4.2 分段更新函数.sql │ │ 3.4.3 IP地址处理函数.sql │ │ 3.5.1 字符串比较函数.sql │ │ 3.5.2 字符串并集&交集处理示例.sql │ ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    Sqlserver2000经典脚本

    纵.sql │ 复杂年月处理.sql │ 统计--交叉表+日期+优先.sql │ ├─第03章 │ │ 3.2 各种字符串分拆处理函数.sql │ │ 3.3 各种字符串合并处理示例.sql │ │ 3.4.1 分段截取函数....

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例107 使用字符串输出对象 132 实例108 简化toString()方法的重写 133 5.6 克隆与序列化 134 实例109 Java对象的假克隆 134 实例110 Java对象的浅克隆 135 实例111 Java对象的深克隆 137 实例112 序列化与对象克隆...

    2009达内SQL学习笔记

    大多数SQL实现支持以下类型的函数: 文本处理, 算术运算, 日期和时间, 数值处理。 Null:空值 空值当成无穷大处理,所有空值参与的运算皆为空。 空值与空值并不相等,因为空值不能直接运算。 如:prod_price...

Global site tag (gtag.js) - Google Analytics