запрос выбора для двух таблиц без уникальных ключей - PullRequest
0 голосов
/ 09 февраля 2011

У меня есть две таблицы.

Table1

<b>
col1   col2  col3</b><br>
100    A     1000 
100    A     1000
100    A     1002
100    B     1003
100    C     1004

Table2

<b>
col1   col2  colC</b><br>
100    A     1X 
100    A     2X  
100    A     3X
100    B     4X
100    C     5X

В приведенной выше таблице значение colC уникально.

iхочу, чтобы мой выходной результат был таким, где значения colC также будут уникальными.

<b>
col1   col2  col3  colC</b><br>
100    A     1000  1X 
100    A     1000  2X  
100    A     1002  3X
100    B     1003  4X
100    C     1004  5X

Я должен использовать col1 и col2 в качестве ключа для соединения.

Возможно ли этосделай это.у меня появились дубликаты для первых двух записей, когда я попробовал с внутренним и левым внешним объединениями.ТИА

Ответы [ 2 ]

3 голосов
/ 09 февраля 2011

Как то так?

select
  a.col1,
  a.col2,
  a.col3,
  b.colC 
from (
  select
    row_number() over (partition by col1, col2 order by 1) r,
    col1,
    col2
  from 
   table1
  ) a,  (
  select
    row_number() over (partition by col1, col2 order by 1) r,
    col1,
    col2
  from 
   table2
  ) b
  where a.r = b.r and
        a.col1 = b.col1 and
        a.col2 = b.col2;
2 голосов
/ 09 февраля 2011
SELECT t1.col1, t1.col2, t1.col3, t2.colC FROM Table1 t1
JOIN Table2 t2
ON t1.col1 = t2.col1
AND t1.col2 = t2.col2

Разве это не правильно?

РЕДАКТИРОВАТЬ: Вы говорите, что получаете дубликаты, но это произойдет, поскольку 2 столбца, которые вы указываете в качестве ключей, на самом деле не являются ключами. Есть другие строки с такими же значениями. Таким образом, если комбинация должна быть уникальной, это может быть связано с ошибкой в ​​данных или с вашими требованиями.

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