Помогите, пжл, написать оптим. запрос

elena77777
Дата: 12.11.2008 14:04:06
create table TEST
(
COL1 INTEGER,
COL2 VARCHAR2(100),
COL3 INTEGER
)

INSERT INTO TEST ( COL1, COL2, COL3 ) VALUES (
1, 'Австр', 12);
INSERT INTO TEST ( COL1, COL2, COL3 ) VALUES (
1, 'Росс', 13);
INSERT INTO TEST ( COL1, COL2, COL3 ) VALUES (
1, 'США', 14);
INSERT INTO TEST ( COL1, COL2, COL3 ) VALUES (
2, 'Австр', 5);
INSERT INTO TEST ( COL1, COL2, COL3 ) VALUES (
2, 'Укр', 45);
INSERT INTO TEST ( COL1, COL2, COL3 ) VALUES (
2, 'Узбек', 33);

В результате надо, чтоб получилось:
1 Австр
1 Росс
1 США
1 Укр
1 Узбек
2 Австр
2 Росс
2 США
2 Укр
2 Узбек
KOT MATPOCKuH
Дата: 12.11.2008 14:09:35
Саавсем ни чо не понял.

При наличии такой информации только такое на уме:
Select  COL1, COL2
From (Select distinct COL1 From TEST) t1
, (Select distinct COL2 From TEST) t2
Order By 1,2
elena77777
Дата: 12.11.2008 14:13:15
Не то, нужно:
1 Австр 12
1 Росс 13
1 США 1
1 Укр 0
1 Узбек 0
2 Австр 5
2 Росс 0
2 США 0
2 Укр 45
2 Узбек 33
Alexander Konakov
Дата: 12.11.2008 14:50:57
elena77777,
WITH t AS
(
SELECT 1 as col1, 'Австр' as col2, 12 as col3 FROM DUAL
UNION
SELECT 1, 'Росс', 13  FROM DUAL
UNION
SELECT 1, 'США', 14 FROM DUAL
UNION
SELECT 2, 'Австр', 5 FROM DUAL
UNION
SELECT 2, 'Укр', 45 FROM DUAL
UNION
SELECT 2, 'Узбек', 33 FROM dual
)
, t1 AS (SELECT DISTINCT col1 FROM t)
, t2 AS (SELECT DISTINCT col2 FROM t)
, t3 AS (SELECT col1, col2 FROM t1, t2)
SELECT t3.col1, t3.col2, nvl(t.col3, 0)
  FROM t3, t
 WHERE t.col1(+) = t3.col1
   AND t.col2(+) = t3.col2
 ORDER BY t3.col1, t3.col2
Alexander Konakov
Дата: 12.11.2008 14:52:19
elena77777,

1Австр12
1Росс13
1США14
1Узбек0
1Укр 0
2Австр5
2Росс0
2США0
2Узбек33
2Укр 45
stax..
Дата: 12.11.2008 15:58:00
а если так
SQL> insert into test values(3,'Пол',77);

1 row created.

SQL> select * from test order by 1,2
  2  /

     COL1 COL2            COL3
--------- ---------- ---------
        1 Австр             12
        1 Росс              13
        1 США               14
        2 Австр              5
        2 Узбек             33
        2 Укр               45
        3 Пол               77

7 rows selected.

SQL> select t2.col1,t2.col2,t1.col3 from test t1
  2  full outer join
  3  (select * from
  4  (select unique col2 from test),
  5   (select distinct col1 from test)) t2
  6  on t1.col2=t2.col2 and t1.col1=t2.col1
  7  order by 1,2
  8  /

     COL1 COL2            COL3
--------- ---------- ---------
        1 Австр             12
        1 Пол
        1 Росс              13
        1 США               14
        1 Узбек
        1 Укр
        2 Австр              5
        2 Пол
        2 Росс
        2 США
        2 Узбек             33
        2 Укр               45
        3 Австр
        3 Пол               77
        3 Росс
        3 США
        3 Узбек
        3 Укр

18 rows selected.

......
stax