programing

SQL에서 그룹당 증분 그룹 번호를 반환하는 방법

oldcodes 2023. 7. 13. 21:06
반응형

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 열을 보면 다음과 같이 고유한 ROW 번호가 표시됩니다.ts_DateTime칸막이를 치다내가 실제로 필요한 것은 각각의 사람들을 위한 것입니다.ts_DateTime파티션을 분할합니다. RowFilter 열은 Required 결과 열과 같아야 합니다.

사용하면 안 됩니다.ROW_NUMBER(),

  • 사용하다DENSE_RANK()대신
  • 제거한다.PARTITION BY

쿼리,

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

제 생각에 당신은 이것을 찾고 있는 것 같습니다.

ROW_NUMBER() OVER (PARTITION BY hl.id ORDER BY hl.ts_DateTime) AS RowFilter

여기 제 대답이 있습니다, Mr.Chris Balance:

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,
   DENSE_RANK() OVER (PARTITION BY hl.ts_datetime ORDER BY hl.Tagname) AS RequiredResult
from Table1 h1

--이것을 사용해 보세요. 저에게 효과가 있습니다.

언급URL : https://stackoverflow.com/questions/14359749/how-to-return-a-incremental-group-number-per-group-in-sql

반응형