SQL에서 행 추가 및 결과 번호 매기기
개수가 다음보다 큰 각 행에 대해 여러 행을 포함하도록 결과 집합을 확장하려면 어떻게 해야 합니까? 1, 순차적으로 번호를 매기면서? 예를 들어 값과 개수가 포함된 다음 표를 고려해 보세요.
Value | Count |
---|---|
foo | 1 |
bar | 3 |
baz | 2 |
원하는 출력은 다음과 같습니다.
Value | Count | Index |
---|---|---|
foo | 1 | 1 |
bar | 3 | 1 |
bar | 3 | 2 |
bar | 3 | 3 |
baz | 2 | 1 |
baz | 2 | 2 |
이러한 데이터베이스 간 호환성을 달성하려면 "숫자" 사용을 고려하세요. table:
SELECT value, count, number FROM table JOIN Numbers ON table.count >= Numbers.number
이 솔루션은 테이블의 최대 개수까지 일련의 숫자를 생성합니다. 원본 테이블을 Numbers 테이블과 결합함으로써 효과적으로 행을 반복하고 순차 인덱스를 할당합니다. 다음은 Microsoft SQL Server를 사용한 예입니다.
WITH Numbers AS ( SELECT ROW_NUMBER() OVER (ORDER BY number) AS number FROM ( SELECT 1 AS number UNION ALL SELECT number + 1 FROM Numbers WHERE number < (MAX(count) OVER ()) ) AS Outer ) SELECT value, count, number FROM table JOIN Numbers ON table.count >= Numbers.number
위 내용은 개수에 따라 SQL에서 행을 추가하고 순차적으로 번호를 매기는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!