我有下面的表有2列。我需要编写一个返回3列的查询,前2列应该与表中的2列匹配,第3列应该分成n个分组。 例如,在这种情况下,我想分成4组。所以前4行应该在第3列中返回1,第4行应该返回2,第3行应该返回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'
答案 0 :(得分:2)
在SQL Server中尝试NTILE()函数
select ID, Name, ntile(4) over (order by Name) from @Names
答案 1 :(得分:0)
试试这个:
select *,((ID-1)/4)+1
from @NAMES
或
select *,(ROW_NUMBER() over (order by id)-1)/4+1
from @NAMES