2015-10-19 3 views
-1
**COLOR** **TIMES** 
ORANGE   1 
RED   2 
BLACK   3 
YELLOW   4 

Но мне нужно данные, чтобы быть отображаются в ниже формате: -У меня есть одна таблица источника, данные которого выглядит

**COLOR** **TIMES** 
ORANGE   1 
RED    1 
RED    1 
BLACK   1 
BLACK   1 
BLACK   1 
YELLOW   1 
YELLOW   1 
YELLOW   1 
YELLOW   1 

Пожалуйста, предложите мне запрос в Oracle SQL

+1

Что вы попробовали? – Galma88

ответ

1

Возможное решение:

SQL> with t as (
    2  select 'ORANGE' as color, 1 as times from dual 
    3  union all select 'RED' as color, 2 as times from dual 
    4  union all select 'BLACK' as color, 3 as times from dual 
    5  union all select 'YELLOW' as color, 4 as times from dual), 
    6 num as (
    7  select rownum as n 
    8  from dual 
    9 connect by level <= 4) 
10 select t.color, 
11   1 as times 
12 from t 
13 join num on num.n <= t.times 
14 order by t.times; 

COLOR  TIMES 
------ ---------- 
ORANGE   1 
RED    1 
RED    1 
BLACK   1 
BLACK   1 
BLACK   1 
YELLOW   1 
YELLOW   1 
YELLOW   1 
YELLOW   1 

10 rows selected. 
+0

Большое спасибо Марко .. –

1

Может быть, не очень хорошо, но это работает:

WITH t AS 
    (SELECT 'Orange' AS color, 1 AS times FROM dual UNION ALL 
    SELECT 'Red' AS color, 2 AS times FROM dual UNION ALL 
    SELECT 'Black' AS color, 3 AS times FROM dual UNION ALL 
    SELECT 'Yellow' AS color, 4 AS times FROM dual), 
t2 AS 
    (SELECT DISTINCT color, 1 AS item, times, LEVEL AS C 
    FROM t 
    CONNECT BY LEVEL <= times) 
SELECT color, item 
FROM t2; 
Смежные вопросы