簡體   English   中英

SQL Server 2008 R2:ROW_NUMBER()有2列

[英]SQL Server 2008 R2: ROW_NUMBER() with 2 columns

表結構:

CREATE TABLE AZTool
(
    t_ID int,
    z_ID int,
    col_date date
);

插入數據:

INSERT INTO AZTool values(12,23409,'2017-01-02')
INSERT INTO AZTool values(12,23409,'2017-01-03')
INSERT INTO AZTool values(21,23409,'2017-03-14')
INSERT INTO AZTool values(12,24455,'2017-04-22')
INSERT INTO AZTool values(22,24455,'2017-05-13')
INSERT INTO AZTool values(22,35600,'2017-04-04')
INSERT INTO AZTool values(23,35600,'2017-05-14')
INSERT INTO AZTool values(24,35600,'2017-05-16')
INSERT INTO AZTool values(25,35600,'2017-05-24')

預期產量:

t_ID    z_ID    RowNumber
-------------------------
12      23409   1
12      23409   1
21      23409   2
12      24455   1
22      24455   2
22      35600   1
23      35600   2
24      35600   3
25      35600   4

我的嘗試:

SELECT
    t_ID, z_ID,
    ROW_NUMBER() OVER (PARTITION BY t_ID, z_ID ORDER BY z_ID) rn
FROM 
    AZTool

我糾正的問題:

  • 從分區中刪除t_ID
  • ORDER BY子句中按t_ID
  • 使用DENSE_RANK而不是ROW_NUMBER


SELECT
    t_ID,
    z_ID,
    DENSE_RANK() OVER(PARTITION BY z_ID ORDER BY t_ID) rn
FROM AZTool;

使用DENSE_RANK()函數:

SELECT t_ID,z_ID,DENSE_RANK() OVER(PARTITION BY z_ID ORDER BY t_ID) rn
FROM AZTool

結果:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM