我想知道是否可以根据条件
实现选择语句或视图以获得运行编号 Col_1 Col_2 Col_3 Col_4 Col_5
20010887A DISP CT1 A030 K2772 1
20010887A DISP CT1 A040 K1444 2
20010887A DISP CT1 A050 K2422 3
20010887A DISP CT1 A060 K3430 4
20010887A DISP CT2 D115 K1473 1
20010887A DISP CT2 D120 K0053A 2
20010887A DISP CT2 D130 K1444 3
20010887A MIX CT1 F190 K1420 1
20010887A MIX CT2 F220 K1433 1
20010887A MIX CT3 G260 K2742A 1
20010887A MIX CT4 I310 K0916 1
20010887A MIX CT5 J330 K1258 1
最后一列是我想要的运行编号,并使用Col_1,Col_2,Col_3,Col_5进行分组。 Col_4只是一个排序序列。
SELECT COL_1,COL_2,COL_3,COL_4,COL_5,ROW_NUMBER()OVER( 按COL_1,COL_2,COL_3分类按COL_4排序作为Col5_Count FROM myTable的
使用上面的查询,是否可以以相同的方式计算Col_3 ROW_NUMBER但是以不同的方式?例如,所有CT1应该为1,CT2应该为2。
由于
答案 0 :(得分:1)
是否可以让Col_3
ROW_NUMBER
以相同的方式计算,但是以不同的方式?例如,所有CT1
应为1,CT2
应为2。
您可以使用DENSE_RANK()
分析函数:
SELECT t.*,
ROW_NUMBER() OVER ( PARTITION BY COL_1, COL_2, COL_3 ORDER BY COL_4 ) AS Col5_Count,
DENSE_RANK() OVER ( ORDER BY COL_3 ) AS Col3_Rank
FROM myTable t