Sql server sql server-使用两列对结果进行编号

Sql server sql server-使用两列对结果进行编号,sql-server,Sql Server,我试图根据两列对行进行编号——我不能很清楚地说明我要做什么,因此在本例中,我希望下表将描绘出一千个单词 鉴于下表: Name | Car Colour ------------------- Alice | Red Alice | Green Alice | Blue Bill | Orange Bill | Purple Carol | Brown Carol | Orange Carol | Magenta Carol | Indigo Carol | Lilac

我试图根据两列对行进行编号——我不能很清楚地说明我要做什么,因此在本例中,我希望下表将描绘出一千个单词

鉴于下表:

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 

编辑-感谢您的快速回复-它们在SQL Server 2008中工作,但是我可以问一下SQL Server 2000是什么替代方案吗它似乎无法识别行号。

要在选择查询中包含索引号,请使用行号:

了解更多有关行号的信息


结果是。

由于您需要按默认顺序为每个名称排序,请使用SELECT 0 in order by子句

查看结果 SQL SERVER 2000


您使用的是什么版本的SQL Server?因此,每个名称都有不同的编号,但我们如何使用颜色来确定要分配的索引。对爱丽丝来说,它似乎是逆字母顺序排列的,但对比尔来说,它似乎是逆字母顺序排列的,我对卡罗尔没有任何模式。您是否还没有向我们展示另一个专栏,它实际上定义了顺序?对不起,我应该提到索引不是特定汽车颜色的函数-它只是取决于每个人拥有的汽车颜色的数量。@Hamlet Hakobyan请参阅博文谢谢,这非常详尽-我可以问一下,Sarath Avanavu的“选择0”命令与您的CarColor命令之间有什么区别?@Bracket:编辑了我的答案。更新了链接。如果您满意,请随时接受答案。只有在所有汽车颜色不同且您取消了订购顺序的情况下,您的更新答案才有效invalid@t-克劳森:我不这么认为。即使有些车有相同的颜色,这也会起作用。只是点菜而已。不分组。请参考。@RagingBull你的小提琴指的是你答案的第一部分。我指的是你答案的更新部分。列名还有一些其他问题
SELECT Name, [Car Color], 
       ROW_NUMBER() OVER (PARTITION BY Name ORDER BY [Car Color] DESC) as [Indiv. Car Index]
FROM TableName
ORDER BY Name
SELECT Name, [Car Colour],
ROW_NUMBER() OVER (PARTITION BY Name ORDER BY (SELECT 0)) [Indiv. Car Index]
FROM YOURTABLE
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