有一表格数据为
BG0001
BG0002
BG0003
BG0004
BG0005
BG0006
BG0007BG0012
BG0023
BG0024
BG0025
BG0026需要得出如下的结果:
BG0001 - BG0007, BG0012, BG0023 - BG0026不晓得T_SQL语句是否能够实现,用编程语言实现亦可!
BG0001
BG0002
BG0003
BG0004
BG0005
BG0006
BG0007BG0012
BG0023
BG0024
BG0025
BG0026需要得出如下的结果:
BG0001 - BG0007, BG0012, BG0023 - BG0026不晓得T_SQL语句是否能够实现,用编程语言实现亦可!
解决方案 »
- 想问一下,实现同一个功能我的两种方法哪个快一些呢,
- 关于Group by的select语句写法
- 如何在SQLServer2000数据库中插入图片,并读出?需要什么样的字段呢?谢谢了
- 找到了LouisXIV(夜游神)就等于找到了党组织
- 用星期做循环条件怎么写啊?
- 几条查询语句,请高手进来看一下
- 存储过程返回参数,要在查询分析器中察看----最容易挣的50分
- 在程序中及查询分析器中都出现的奇怪问题:存储过程参数值被截断
- MS-SQL Server的LinkServer如何配置参数
- 如何写sql查询具有多个特定属性的部门
- 删除数据时,相关联表影响问题
- 如何将日期型转换为'2006-03-29 10:39:50'(字符串),在线等。
GO-- 测试数据
DECLARE @t TABLE(col varchar(10))
INSERT @t SELECT 'BG0001'
UNION ALL SELECT 'BG0002'
UNION ALL SELECT 'BG0003'
UNION ALL SELECT 'BG0004'
UNION ALL SELECT 'BG0005'
UNION ALL SELECT 'BG0006'
UNION ALL SELECT 'BG0007'UNION ALL SELECT 'BG0012'
UNION ALL SELECT 'BG0023'
UNION ALL SELECT 'BG0024'
UNION ALL SELECT 'BG0025'
UNION ALL SELECT 'BG0026'-- 查询
DECLARE @s nvarchar(4000), @col varchar(10)
SELECT @s='', @col = '-1'
SELECT @s = CASE
WHEN RIGHT(@col, 4) + 1 = RIGHT(col, 4) THEN @s
ELSE @s + CASE WHEN @s LIKE '%,' + @col THEN '' ELSE ' - ' + @col END + ',' + col END,
@col = col
FROM @t
ORDER BY col
SET @s = STUFF(@s, 1, 6, '') + CASE WHEN @s LIKE '%,' + @col THEN '' ELSE ' - ' + @col END
SELECT @s-- 结果:BG0001 - BG0007,BG0012,BG0023 - BG0026(1 行受影响)