[SQL] 컬럼의 값에 따라 오라클 쿼리의 결과를 전개하는 방법
SQL컬럼의 값에 따라 오라클 쿼리의 결과를 전개하는 방법
나는 두 개의 열이있는 오라클 DB의 테이블이 있습니다. 나는 두 번째 열에 저장된 번호와 같은 횟수만큼 반복되는 모든 행을보고 싶습니다. 표는 다음과 같습니다 :
col1 col2
a 2
b 3
c 1
나는이 반환하는 쿼리를 작성합니다 :
col1 col2
a 2
a 2
b 3
b 3
b 3
c 1
COL2 지시의 값 그래서 횟수는 행이 반복됩니다. 이를 달성하는 간단한 방법이 있나요?
감사!
해결법
-
==============================
1.SQL 바이올린
SQL 바이올린
오라클 11g R2 스키마 설정 :
CREATE TABLE test ( col1, col2 ) AS SELECT 'a', 2 FROM DUAL UNION ALL SELECT 'b', 3 FROM DUAL UNION ALL SELECT 'c', 1 FROM DUAL
쿼리 1 :
SELECT col1, col2 FROM test t, TABLE( CAST( MULTISET( SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= t.col2 ) AS SYS.ODCINUMBERLIST ) )
결과 :
| COL1 | COL2 | |------|------| | a | 2 | | a | 2 | | b | 3 | | b | 3 | | b | 3 | | c | 1 |
-
==============================
2.A는 테이블의 경우, 당신은 할 수 있습니다 :
A는 테이블의 경우, 당신은 할 수 있습니다 :
select a1.col1 , a1.col2 from a a1 join (select level col2 from dual connect by level < ( select max(col2) + 1 from a)) a2 on a2.col2 between 1 and a1.col2
-
==============================
3.
with src (col1, col2) as ( SELECT 'a', 2 FROM DUAL UNION ALL SELECT 'b', 3 FROM DUAL UNION ALL SELECT 'c', 1 FROM DUAL ) SELECT src.* FROM src JOIN ( SELECT LEVEL val FROM DUAL CONNECT BY LEVEL <= (SELECT MAX(col2) FROM src) ) gen ON gen.val <= src.COL2 ORDER BY src.col1
또는 Oracle 12에서 사용할 수 있습니다
with src (col1, col2) as ( SELECT 'a', 2 FROM DUAL UNION ALL SELECT 'b', 3 FROM DUAL UNION ALL SELECT 'c', 1 FROM DUAL ) SELECT src.* FROM src CROSS APPLY (SELECT NULL FROM DUAL CONNECT BY LEVEL <= src.col2) ORDER BY col1;
-
==============================
4.여기에 대안의 그 COL1을 가정하는 것이 유일하다, (난 그냥 다른 열이 존재할 수 있음을 보여주기 위해 여분의 열을 추가 한) :
여기에 대안의 그 COL1을 가정하는 것이 유일하다, (난 그냥 다른 열이 존재할 수 있음을 보여주기 위해 여분의 열을 추가 한) :
with src (col1, col2, col3) as ( SELECT 'a', 'b', 2 FROM DUAL UNION ALL SELECT 'b', 'c', 3 FROM DUAL UNION ALL SELECT 'c', 'd', 1 FROM DUAL ) select col1, col2, col3 from src connect by level <= col3 and prior col1 = col1 and prior sys_guid() is not null; COL1 COL2 COL3 ---- ---- ---------- a b 2 a b 2 b c 3 b c 3 b c 3 c d 1
from https://stackoverflow.com/questions/32522718/how-to-unfold-the-results-of-an-oracle-query-based-on-the-value-of-a-column by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 테이블의 컬럼이 고정되어 있지 스키마를 설계 할 수 (0) | 2020.06.17 |
---|---|
[SQL] SQL 서버 - 피벗 해결 가능? (0) | 2020.06.17 |
[SQL] 직교 제품에 SQL 쿼리 리드에서 UDF를 사용하는 이유는 무엇입니까? (0) | 2020.06.17 |
[SQL] 함수에서 쿼리를 반환? (0) | 2020.06.17 |
[SQL] 링크 된 MySQL 서버 SELECT * FROM (0) | 2020.06.17 |