복붙노트

[SQL] 어떻게 SQL에서 그룹 당 증분 그룹 번호를 반환

SQL

어떻게 SQL에서 그룹 당 증분 그룹 번호를 반환

나는 일반적인 날짜에 그룹화 된 행의 점진적 번호 그룹에 SQL에서 데이터 쿼리를 작성하고 다음 날짜 등의 증가 "그룹 번호"를 유지하고 싶습니다. 문 파티션을 사용할 때 보았 듯이 이러한 "그룹 번호는"각 그룹에 대해 재설정되지해야합니다. 여기 내 샘플 데이터는 다음과 같습니다

ts_DateTime          |ID   |Value|RowFilter|RequiredResult
--------------------------
2013/01/09 09:23:16  |8009 |0    |1        |1
2013/01/09 09:23:16  |8010 |0    |2        |1
2013/01/09 09:23:16  |8026 |0    |3        |1

2013/01/09 09:23:22  |8026 |0    |1        |2

2013/01/09 09:23:28  |8009 |0    |1        |3
2013/01/09 09:23:28  |8010 |0    |2        |3
2013/01/09 09:23:28  |8026 |0    |3        |3

2013/01/09 09:27:03  |8009 |0    |1        |4
2013/01/09 09:27:03  |8010 |0    |2        |4
2013/01/09 09:27:03  |8026 |0    |3        |4

2013/01/09 09:27:09  |8009 |0    |1        |5
2013/01/09 09:27:09  |8010 |0    |2        |5
2013/01/09 09:27:09  |8026 |0    |3        |5

2013/01/09 09:27:15  |8009 |0    |1        |6
2013/01/09 09:27:15  |8010 |0    |2        |6
2013/01/09 09:27:15  |8026 |0    |3        |6


나는 이러한 결과를 얻기 위해 사용하고 쿼리는 다음과 같습니다

select hl.ts_DateTime,  hl.Tagname as [ID],  hl.TagValue as [Value],
ROW_NUMBER() OVER (PARTITION BY hl.ts_datetime ORDER BY hl.tagname) AS RowFilter
from Table1 hl

그래서 기본적으로의 RowFilter 열을보고, 나는 ts_DateTime 파티션마다 고유 한 행 번호를 얻고있다. 내가 실제로 필요 각 ts_DateTime 파티션의의 RowFilter 열이 필수 결과 열 같이해야한다는 것입니다.

해결법

  1. ==============================

    1.당신은) (ROW_NUMBER를 사용하지 않아야

    당신은) (ROW_NUMBER를 사용하지 않아야

    질문,

    SELECT hl.ts_DateTime,  
           hl.Tagname as [ID],  
           hl.TagValue as [Value],
           DENSE_RANK() OVER (ORDER BY ts_datetime) AS RowFilter
    FROM   Table1 hl 
    ORDER  BY RowFilter
    
  2. ==============================

    2.난 당신이 찾고있는 생각 :

    난 당신이 찾고있는 생각 :

    ROW_NUMBER() OVER (PARTITION BY hl.id ORDER BY hl.ts_DateTime) AS RowFilter
    
  3. from https://stackoverflow.com/questions/14359749/how-to-return-a-incremental-group-number-per-group-in-sql by cc-by-sa and MIT license