本文介绍了如何在一行中选择多行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮助我在多行选择时执行此操作,当排的行没有继续时:



标记

第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


这篇关于如何在一行中选择多行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-15 20:14