Предположим, у меня есть две таблицы, A и B, как с столбцом идентификатора, так и с внешним ключом (значением).SQL Server: сопоставление записей из 2 таблиц с сортировкой
Я хочу сделать выбор на основе запроса, который возвращает только совпадающие записи, не включая тех, которые не удовлетворяют условие наличия один и тот же данные (ID
и Value
столбцов), также отсортированный по Value
колонке таблицы B.
Таблица A
SELECT *
FROM (VALUES
(15, 1),
(16, 2),
(17, 3)
) as t(idMetadata, [Value])
Таблица B
SELECT *
FROM (VALUES
(185442, 22008, 16, 6 ,2),
(187778, 22269, 16, 6 ,2),
(211260, 24925, 16, 6 ,2),
(251476, 29431, 15, 4 ,1),
(251477, 29431, 16, 5 ,2),
(251478, 29431, 17, 6 ,3)
) as t(idDet, idEnc, idMetadata, OrderValue, [Value])
ожидат Ted результат
Может ли это быть достигнуто с помощью одного запроса? Или мне нужно создать CTE или подзапросы?
EDIT: Извините, я забыл упомянуть еще одно условие для запроса: в таблице B записи должны иметь один и тот же идентификатор, а столбец OrderValue должен быть последовательным. Вот почему ожидаемый результат также имеет тот же идентификатор, что и OrderValue 4, 5 & 6.
Что такое смысл OrderValue? Почему 5 в порядке для 16 - 5 - 2 (таблица B второй строки снизу), но 6 не следует включать 16 - 6 - 2 (таблица B в верхние три строки). – kurin123
@ kurin123 OrderValue - это последовательное значение, которое показывает порядок, в который были вставлены записи idEnc в таблице B. Я отредактировал вопрос, потому что забыл упомянуть еще одно условие и состоит в том, что строки ожидаемого результата должны иметь один и тот же idEnc, а также OrderValue должны быть последовательными, поэтому ожидаемые записи имеют 4, 5 и 6 в столбце OrderValue и то же самое idEnc. – Adrian87
Итак, вы пробовали решения из ответов? – gofr1