本文介绍了如何在一行中选择多行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
请帮助我在多行选择时执行此操作,当排的行没有继续时:
标记
第1行: 1
第2行:2
第3行:3
第4行:6
第5行:7
第6行:8
第7行:14
第8行:15
答案将是:
第1行:1,2,3
第2行:6,7,8
第3行:14,15
Hi please help me to do this on multi row select when sort of row is'nt continued:
marks
Row1: 1
Row2: 2
Row3: 3
Row4: 6
Row5: 7
Row6: 8
Row7: 14
Row8: 15
answer will be:
Row1: 1,2,3
Row2: 6,7,8
Row3: 14,15
推荐答案
CREATE TABLE [dbo].[test](
[number] [int],
[id] [int] IDENTITY(1,1) NOT NULL
)
您可以发出以下查询:
You can issue following query:
WITH MYCTE (group_id, number)as
(
select
ROW_NUMBER() OVER(ORDER BY ID) / 3 as group_id, number
FROM test
)
select dbo.GROUP_CONCAT_D(number, ', ') from MYCTE group by group_id
var nums = new [] {1, 2, 3, 6, 7, 8, 14, 15};
var @group = 0;
nums.Zip(nums.Skip(1).Concat(new [] {nums.Last()}),
(n1, n2) => Tuple.Create(n1, (n2 - n1) == 1 ? @group : @group++))
.GroupBy (t => t.Item2)
.Select (g => new {Group = string.Join(",", g.Select(x => x.Item1)), Count = g.Count()})
.Dump();
结果:
Result:
Group Count
1,2,3 3
6,7,8 3
14,15 2
这篇关于如何在一行中选择多行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!