Объединение временных таблиц с различной структурой - PullRequest
0 голосов
/ 10 марта 2009

У меня есть 2 временные таблицы. У одного есть столбец данных мудрый.

OrderCode   OrderType
ABC         1000

Один имеет ряд данных мудрый

FieldName   Value
ORDER_CODE  ABC
ORDER_TYPE  2000

Мне нужно написать запрос, который по существу объединяет их и обновляет значение, если оно существует в таблице 2.

Результат набора записей должен быть

OrderCode  OrderType
ABC        2000

Edit-

Если в таблице 1 есть 2 заказа с одинаковым кодом:

OrderCode   OrderType
ABC         1000
ABC     5000

набор результатов должен быть

   OrderCode   OrderType
   ABC         2000
   ABC         2000

1 Ответ

1 голос
/ 10 марта 2009

Чтобы выбрать набор строк:

SELECT  tt1.ordercode, tt2_type.Value
FROM    Table2 AS tt2_code
JOIN    Table1 tt1
ON      tt1.orderCode = tt2_code.value
JOIN
        Table2 AS tt2_type
ON      tt2_type.fieldName = 'ORDER_TYPE'
WHERE   tt2_code.fieldName = 'ORDER_CODE'

Для обновления Table1 на основе значений из Table2:

WITH q AS
    (
    SELECT  tt1.ordercode, tt2_type.Value
    FROM    Table2 AS tt2_code
    JOIN    Table1 tt1
    ON      tt1.orderCode = tt2_code.value
    JOIN
            Table2 AS tt2_type
    ON      tt2_type.fieldName = 'ORDER_TYPE'
    WHERE   tt2_code.fieldName = 'ORDER_CODE'
    )
UPDATE q
SET    oldvalue = newvalue

Это один из случаев, когда синтаксис без JOIN более разборчивый.

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