1

誰かが非常に単純な SQL クエリを手伝ってくれるかどうか疑問に思っています。

table1 から table2 にデータを転送する必要がありますwhere table1.jobID = table2.jobID

join を使用する必要がありますか?

jobID を使用して一致する table1 のデータを NULL 列に入力したいだけです。

前もって感謝します

交流

4

2 に答える 2

0

You need to update when t1.column is null . and when t1.column is not null you should set it to itself.

SELECT *
INTO   #table1
FROM   (SELECT '1'  AS jobid,
               NULL AS column1
        UNION ALL
        SELECT '2',
               NULL
        UNION ALL
        SELECT '3',
               NULL
        UNION ALL
        SELECT '4',
               'A'
        UNION ALL
        SELECT '5',
               NULL) a

SELECT *
INTO   #table2
FROM   (SELECT '1' AS jobid,
               '1' AS column1
        UNION ALL
        SELECT '2',
               '2'
        UNION ALL
        SELECT '3',
               '3'
        UNION ALL
        SELECT '4',
               '4'
        UNION ALL
        SELECT '5',
               '5')b

UPDATE t1
SET    t1.column1 = ( CASE
                        WHEN t1.column1 IS NULL THEN t2.column1
                        ELSE t1.column1
                      END )
FROM   #table1 t1
       LEFT JOIN #table2 t2
         ON t1.jobid = t2.jobid

SELECT *
FROM   #table1  
于 2012-04-05T02:06:17.657 に答える
0

知識が限られているため、必要なのは単純な更新だけのように思えます。

UPDATE PreviousJobsTEST
SET dValuationDate = Jobs.dValuationDate
FROM PreviousJobsTEST
    JOIN Jobs
        ON PreviousJobsTEST.iJobID= Jobs.iJobID

null の場合にのみ更新する場合は、次のようにします。

UPDATE PreviousJobsTEST
SET dValuationDate = CASE WHEN PreviousJobsTEST.dValuationDate IS NULL THEN Jobs.dValuationDate ELSE PreviousJobsTEST.dValuationDate END
FROM PreviousJobsTEST
    JOIN Jobs
        ON PreviousJobsTEST.iJobID= Jobs.iJobID

または、コメントに基づいて、リストしたことを行うことができます。挿入の背後にある SELECT に変換するだけです。

INSERT INTO [DocPrep].[dbo].[PreviousJobsTEST] (dValuationDate) 
SELECT [DocPrep].[dbo].[Jobs].[dValuationDate]
FROM [DocPrep].[dbo].[PreviousJobsTEST]
    JOIN [DocPrep].[dbo].[Jobs] 
        ON [DocPrep].[dbo].[Jobs].[iJobID] = [DocPrep].[dbo].[PreviousJobsTEST].[iJobID]
于 2012-04-05T01:50:28.567 に答える