0

source_table と destination_table の 2 つのテーブルがあります

ソーステーブルを以下に示します

orderid orderno invoiceno amount
 1         10       NULL    100
 2         NULL     11      200

列でdestination_tableを更新する必要があります

orderid  orderno amount
  1         -      -
  2         -      -
  3         -      -

条件に基づいて、送信元の orderid が送信先の orderid と一致します

ソース orderno の値が null でない場合、その値は destination の orderno 列で更新する必要があります。

4

4 に答える 4

1

してみてください:

Update D
    SET orderno = (case when S.orderno is not null then orderno else s.invoiceno end)
FROM
    source_table S Join destination_table D
    ON S.orderid = D.orderid
于 2013-01-31T07:12:28.123 に答える
1

いくつかのオプションがあります。1 つのオプションは、次を使用することCASEです。

UPDATE d
SET d.OrderNo = 
   CASE 
     WHEN S.OrderNo IS NOT NULL THEN s.OrderNo END ELSE S.invoiceno END
FROM Source S 
    JOIN Destination D ON S.OrderId = D.OrderId

または私は個人的に使用することを好みますCOALESCE

UPDATE d
SET d.OrderNo = COALESCE(S.OrderNo, S.InvoiceNo)
FROM Source S 
    JOIN Destination D ON S.OrderId = D.OrderId

幸運を。

于 2013-01-31T07:12:32.537 に答える
0

sqlserver を使用している場合は、ISNULL 関数も使用できます。以下のSQLを参照してください。

UPDATE D 
SET orderno = ISNULL(S.orderno, S.invoiceno), 
    amount =  S.amount 
FROM source_table S INNER JOIN destination_table D ON S.orderid = D.orderid 
WHERE S.orderno IS NOT NULL OR S.invoiceno IS NOT NULL
于 2013-01-31T07:26:06.013 に答える
0
Update D
SET orderno = S.orderno, amount = S.amount
FROM
source_table S Join destination_table D
ON S.orderid = D.orderid
WHERE S.orderno is not null

Update D
SET orderno = S.invoiceno, amount = S.amount
FROM
source_table S Join destination_table D
ON S.orderid = D.orderid
WHERE S.orderno is null
于 2013-01-31T07:06:57.370 に答える