2015-01-23 2 views
-1

У меня есть две таблицы с информацией о каждом SKU (продукте): TransactionTable и PositionTable (см. Рисунок ниже).Соедините таблицы, но только для первой строки, которая имеет тот же ID

Я перепробовал кучу способов, чтобы присоединиться к 2 таблицы, но я получаю результат видели в InCorrectSkusPositionAndNrTran. Я хочу получить результат, увиденный в CorrectSkusPositionAndNrTran.

Причина, по которой я хочу получить второй результат, заключается в том, что она даст точное представление количества транзакций за SKU, чтобы я мог их суммировать.

+3

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

+1

Большинство СУРБД, кроме SQLite и MySQL, имеют функции 'rank()' и/или 'row_number()'. Те должны получить то, что вам нужно. –

+0

Простите, если я ошибаюсь, увидев пример. кажется, что для позиции B и C в PositionTable нет никакого значения.
В PositionTable, если есть запись для пары 3-B вместо 3-A, будет ли CorrectOutput иметь 3 -30 в наборе результатов? – SrinivasR

ответ

0

Пробовал ниже на Teradata:
SELECT
POS.SKU_Id
,POS.PositionInStore
,CASE WHEN RANK() OVER(PARTITION BY TR.SKU_Id ORDER BY TR.SKU_Id
ASC ,POS.PositionInStore ASC) = 1 THEN TR.nr_transactions ELSE NULL END
FROM TransactionTable TR RIGHT OUTER JOIN PositionTable POS
ON POS.SKU_Id = TR.SKU_Id ORDER BY 1,2;

и дает искомую таблицу вывода.

Смежные вопросы