我试图根据两列对行进行编号--我不太清楚我想要做什么,所以在本例中,我希望下面的表将画出上千个单词。
下表如下:
Name | Car Colour
-------------------
Alice | Red
Alice | Green
Alice | Blue
Bill | Orange
Bill | Purple
Carol | Brown
Carol | Orange
Carol | Magenta
Carol | Indigo
Carol | Lilac
Carol | White如何显示下列内容:
Name | Car Colour | Indiv. Car Index
-------------------------------------------
Alice | Red | 1
Alice | Green | 2
Alice | Blue | 3
Bill | Orange | 1
Bill | Purple | 2
Carol | Brown | 1
Carol | Orange | 2
Carol | Magenta | 3
Carol | Indigo | 4
Carol | Lilac | 5
Carol | White | 6 编辑--感谢您的快速响应--它们在Server 2008中工作,但是我可以问一下Server 2000的替代方案是什么吗?-它似乎不认识ROW_NUMBER()。
发布于 2015-01-28 10:33:50
由于您需要在默认情况下为每个Name订购订单,所以在ORDER BY子句中使用SELECT 0。
SELECT Name, [Car Colour],
ROW_NUMBER() OVER (PARTITION BY Name ORDER BY (SELECT 0)) [Indiv. Car Index]
FROM YOURTABLESQL SERVER 2000
SELECT * FROM
(
SELECT (SELECT count(*) from #TEMP as e2
WHERE e2.Name = e1.Name AND e2.[CAR COLOUR] <= e1.[CAR COLOUR]) as RNO, e1.Name,e1.[CAR COLOUR]
FROM #TEMP as e1
)TAB
ORDER BY NAME,RNO发布于 2015-01-28 10:29:24
若要在SELECT查询中包括索引号,请使用ROW_NUMBER()
SELECT Name, [Car Color],
ROW_NUMBER() OVER (PARTITION BY Name ORDER BY [Car Color] DESC) as [Indiv. Car Index]
FROM TableName
ORDER BY Name阅读更多关于ROW_NUMBER() 这里的信息。
结果为SQL Fiddle。
https://stackoverflow.com/questions/28189782
复制相似问题