2016-06-10 40 views
0

不完全知道如何我會形容我想要的,但我有一個具有以下值的表:SQL Server - 如何檢索表中每行的每個值的遞增計數?

ID GoodsNumber 
1 700 
2 701 
3 700 
4 700 
5 701 

我怎樣才能檢索到的ID號(及其關聯GoodsNumbers),具有計數沿該GoodsNumber(由ID有序),將一次出現如此如下:

ID GoodsNumber Count 
1 700   1 
2 701   1 
3 700   2 
4 700   3 
5 701   2 

我試過以下,但它不工作 - 它只是給我上的每一行的總數:

SELECT A.ID, A.GoodsNum, B.Count 
FROM Tbl A 
INNER JOIN 
(SELECT GoodsNum, count(GoodsNum) as Count 
FROM Tbl 
GROUP BY GoodsNum) B 
ON A.GoodsNum = B.GoodsNum 
+0

希望這有助於:SELECT *,ROW_NUMBER()過(按GoodNumber ORDER BY ID劃分)AS數 FROM Goods ORDER BY ID – Rajesh

回答

1

SQL 2008+使用ROW_NUMBER()

SELECT ID, 
     GoodsNumber, 
     ROW_NUMBER() OVER (PARTITION BY GoodsNumber 
          ORDER BY id) [Count] 
FROM YourTable 
ORDER BY ID 

添加,其中添加一個子查詢

SELECT * 
FROM (
    SELECT ID, 
      GoodsNumber, 
      ROW_NUMBER() OVER (PARTITION BY GoodsNumber 
           ORDER BY id) [Count] 
    FROM YourTable 
    ) T 
WHERE ID = <yourVariable> 
+0

It作品在2005+ –

+0

@MartinSmith你確定嗎?我谷歌row_number和說申請2008+ https://msdn.microsoft.com/en-us/library/ms186734.aspx –

+0

是積極的,這可能是一個錯誤在BOL或他們根本不打擾回來之前,現在。 –

0

試試這個:

select ID ,GoodsNumber , row_number() over (partition by Goodno order by id) as [Count] from QC

相關問題