SQL вопросов интервью - PullRequest
0 голосов
/ 06 марта 2020

Таблица-1

Col1 col2
11     A   
26     B
31     C
43     D

Таблица-2

Col1 col2
16     E   
46     F
39     G
42     H

И нужно вывести

Col1 col2 Col1 col2
11     A   16   E
26     B   46   F
31     C   39   G
43     D   42   H

Ответы [ 3 ]

0 голосов
/ 06 марта 2020

Вот один из вариантов:

SQL> with
  2  -- sample data
  3  a (col1, col2) as
  4    (select 11, 'A' from dual union all
  5     select 26, 'B' from dual union all
  6     select 31, 'C' from dual union all
  7     select 43, 'D' from dual
  8    ),
  9  b (col1, col2) as
 10    (select 16, 'E' from dual union all
 11     select 46, 'F' from dual union all
 12     select 39, 'G' from dual union all
 13     select 42, 'H' from dual
 14    ),
 15  -- find something to join rows on - for example, row number. Your example shows that
 16  -- values are sorted by COL2
 17  a2 as
 18    (select col1, col2, row_number() over (order by col2) rn from a),
 19  b2 as
 20    (select col1, col2, row_number() over (order by col2) rn from b)
 21  -- join a2 and b2 on RN
 22  select a2.col1, a2.col2, b2.col1, b2.col2
 23  from a2 join b2 on a2.rn = b2.rn
 24  order by a2.col1;

 COL1 COL2  COL1 COL2
----- ---- ----- ----
   11 A       16 E
   26 B       46 F
   31 C       39 G
   43 D       42 H

SQL>
0 голосов
/ 06 марта 2020
select * from table1 t1 join table2 t2 on ascii(t1.col2)+4 = ascii(t2.col2);

Примечание: это работает только с указанным вводом c, но почему бы и нет? Это просто показывает, что предоставление минимального ввода и ожидаемого результата недостаточно. Вы должны объяснить, каким правилам должен следовать ввод и каким правилам должна следовать обработка.

Littlefoot отвечает на другой вопрос, чем я, но даже он молча делает некоторые предположения. Например, он решил не показывать никаких выходных данных, если с одной или другой стороны есть несопоставленные строки.

Правильный реальный ответ на этот вопрос интервью будет состоять в том, чтобы перечислить вопросы, которые нужно будет задать перед возможность дать соответствующий ответ.

0 голосов
/ 06 марта 2020
select t1.col1, t1.col2, t2.col1, t2.col2 from table1 as t1 
left join table2 as t2 on 1=1

Попробуйте это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...