1

以下の2つの列を持つテーブルがあります.3つの列を返すクエリを作成する必要があります。最初の2つの列は、テーブルに存在する2つの列と一致し、3番目の列はn個の分割にグループ化する必要があります。たとえば、この場合、4つのグループに分割したいので、最初の4行は列3に1を返し、2番目の4行は2を返し、3番目の4行は3を返し、最後に最後の3行を返す必要があります(合計15行あるため) )は4を返す必要があります。

DECLARE @NAMES TABLE ( [ID] INT IDENTITY, [NAME] VARCHAR(20) )   
INSERT INTO @NAMES SELECT 'NAME1' 
UNION ALL 
SELECT 'NAME2' 
UNION ALL 
SELECT 'NAME3' 
UNION ALL 
SELECT 'NAME4' 
UNION ALL 
SELECT 'NAME5' 
UNION ALL 
SELECT 'NAME6' 
UNION ALL 
SELECT 'NAME7' 
UNION ALL 
SELECT 'NAME8' 
UNION ALL 
SELECT 'NAME9' 
UNION ALL 
SELECT 'NAME10' 
UNION ALL 
SELECT 'NAME11' 
UNION ALL 
SELECT 'NAME12' 
UNION ALL 
SELECT 'NAME13' 
UNION ALL 
SELECT 'NAME14' 
UNION ALL 
SELECT 'NAME15' 
4

2 に答える 2

2

SQL ServerでNTILE()関数を試してください

select ID, Name, ntile(4) over (order by Name) from @Names
于 2012-10-16T11:25:07.433 に答える
0

これを試して:

select *,((ID-1)/4)+1 
from @NAMES

また

select *,(ROW_NUMBER() over (order by id)-1)/4+1
from @NAMES


SQLフィドルデモ

于 2012-10-16T11:28:02.463 に答える