回答

收藏

是否可用SQL添加身份GROUP BY?

技术问答 技术问答 232 人阅读 | 0 人回复 | 2023-09-13

是否可以在GROUP BY在每个重复项中添加一个标识列以便有一个标识号?
% a. a" N. {( w7 Z! p: s" c我的原始数据如下:
6 E  G& Z, J' |7 N9 n  p4 m1    AAA  [timestamp]2    AAA  [timestamp]3    BBB  [timestamp]4    CCC  [timestamp]5    CCC  [timestamp]6    CCC  [timestamp]7    DDD  [timestamp]8    DDD  [timestamp]9    EEE  [timestamp]....我想把它变成:8 k0 D, q6 r5 [- ^* }
1    AAA   12    AAA  24    CCC   15    CCC   26    CCC   37    DDD   18    DDD   2...解决方案如下:
: w) L( n, l: T- qCREATE PROCEDURE [dbo].[RankIt]ASBEGINSET NOCOUNT ON;SELECT  *,RANK() OVER(PARTITION BY col2 ORDER BY timestamp DESC) AS ranking FROM MYTABLE;END                : T. C' ~+ z" c' @$ c/ x2 z
    解决方案:                                                                & f2 r5 j- K7 G
                                                                假如你用的是Sql Server 2005,可以试试ROW_NUMBER
2 e' a* {5 C& s5 _( [DECLARE @Table TABLE(         ID INT,       Val VARCHAR(10))INSERT INTO @Table SELECT 1,'AAA'INSERT INTO @Table SELECT 2,'AAA'INSERT INTO @Table SELECT 3,'BBB' INSERT INTO @Table SELECT 4,'CCC' INSERT INTO @Table SELECT 5,'CCC' INSERT INTO @Table SELECT 6,'CCC' INSERT INTO @Table SELECT 7,'DDD' INSERT INTO @Table SELECT 8,'DDD' INSERT INTO @Table SELECT 9,'EEE'SELECT  *,       ROW_NUMBER() OVER(PARTITION BY VAL ORDER BY Val)FROM    @Table
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则