是否有可能通過順序進行選擇查詢,結果是插入每行的位置新列?SQL按順序排序並插入到每一行的位置編號
,比如我有表:
Name
-------
A
D
D
B
C
B
,因此我想有表:
Name Position
-------------
A 1
D 4
D 4
B 2
B 2
C 3
感謝您的幫助
是否有可能通過順序進行選擇查詢,結果是插入每行的位置新列?SQL按順序排序並插入到每一行的位置編號
,比如我有表:
Name
-------
A
D
D
B
C
B
,因此我想有表:
Name Position
-------------
A 1
D 4
D 4
B 2
B 2
C 3
感謝您的幫助
SELECT Name ,
DENSE_RANK() OVER (ORDER BY Name) AS 'Position'
FROM Table
這將產生
Name Position
-------------
A 1
B 2
B 2
C 3
D 4
D 4
因此可能難以維持原來的訂貨
我編輯了我的問題,以顯示我的意思更清楚 – gruber 2011-05-03 17:13:10
看起來像你需要'dense_rank' – 2011-05-03 17:15:07
@Martin是的謝謝。 – 2011-05-03 17:20:13
使用ROW_NUMBER
SELECT name,ROW_NUMBER() OVER(ORDER BY name) as Position
FROM YourTable
SELECT
Name,
ROW_NUMBER() OVER(ORDER BY Name) AS POSITION
FROM Table_1
SELECT Name, DENSE_RANK() OVER (ORDER BY Name) AS 'Position'
FROM Table
什麼是 'A' 之間的關係,「1 ' - 和'B'和'2' - 我假設你會按姓名排序? – 2011-05-03 17:06:21
yes按名稱排序 – gruber 2011-05-03 17:11:58
您在兩分鐘前編輯過,指出如果有'B'兩次,那麼它們應該被分配相同的位置值? – 2011-05-03 17:15:44