Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The following example may give you a starting point. Note that there <em>must</em> be an explicit order provided for the values that you want to insert. A table has no natural order and "sequential" is meaningless.</p> <pre><code>-- Sample data. declare @Template as Table ( TemplateValue VarChar(10), TemplateRank Int ); -- NB: TemplateRank values are assumed to start at zero and be dense. insert into @Template ( TemplateValue, TemplateRank ) values ( 'one', 0 ), ( 'two', 1 ), ( 'three', 2 ), ( 'four', 3 ); declare @NumberOfTemplateValues Int = ( select Max( TemplateRank ) from @Template ) + 1; select * from @Template; declare @AccumulatedStuff as Table ( Id Int Identity, Value VarChar(10) ); declare @GroupSize as Int = 5; -- Add a block of GroupSize rows to the AccumulatedStuff . declare @LastValue as VarChar(10) = ( select top 1 Value from @AccumulatedStuff order by Id desc ); declare @LastRank as Int = ( select TemplateRank from @Template where TemplateValue = @LastValue ); select @LastValue as LastValue, @LastRank as LastRank; with Numbers as ( select 1 as Number union all select Number + 1 from Numbers where Number &lt; @GroupSize ), RankedValues as ( select TemplateValue, TemplateRank from @Template as T inner join Numbers as N on ( N.Number + Coalesce( @LastRank, @NumberOfTemplateValues - 1 ) ) % @NumberOfTemplateValues = T.TemplateRank ) insert into @AccumulatedStuff select TemplateValue from RankedValues; select * from @AccumulatedStuff; -- Repeat. set @LastValue = ( select top 1 Value from @AccumulatedStuff order by Id desc ); set @LastRank = ( select TemplateRank from @Template where TemplateValue = @LastValue ); select @LastValue as LastValue, @LastRank as LastRank; with Numbers as ( select 1 as Number union all select Number + 1 from Numbers where Number &lt; @GroupSize ), RankedValues as ( select TemplateValue, TemplateRank from @Template as T inner join Numbers as N on ( N.Number + Coalesce( @LastRank, @NumberOfTemplateValues - 1 ) ) % @NumberOfTemplateValues = T.TemplateRank ) insert into @AccumulatedStuff select TemplateValue from RankedValues; select * from @AccumulatedStuff; </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload