连接具有不同结构的临时表

时间:2009-03-10 15:37:01

标签: sql sql-server sql-server-2005

我有2个临时表。一个人有数据列明智。

OrderCode   OrderType
ABC         1000

一个人有数据行

FieldName   Value
ORDER_CODE  ABC
ORDER_TYPE  2000

我需要编写一个基本上连接它们的查询,并在表2中存在时更新该值。

记录集结果需要

OrderCode  OrderType
ABC        2000

编辑 -

如果表1中有2个订单具有相同的订单代码:

OrderCode   OrderType
ABC         1000
ABC     5000

结果集必须是

   OrderCode   OrderType
   ABC         2000
   ABC         2000

1 个答案:

答案 0 :(得分:1)

选择行集:

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 - 较少语法更易读的情况之一。