2012-03-08 11 views
1

(col1(char)、col2(int、prim key)、col3(char))で構成されるSQL 2008 R2テーブルがあります。テーブルを作成してマージを行う

私は...

MERGE [dbo].[Data] as target 
USING 
(
SELECT 01, 1, 'Data1' 
UNION ALL 
SELECT 03, 2, 'Data2' 
UNION ALL 
SELECT D2, 3, 'Data3' 
)AS source ([Col1], [Col2], [Col3]) 
ON (target.[Col2] = source.[Col2]) 
WHEN MATCHED THEN 
    UPDATE SET [Col1] = source.[Col1], 
       [col3] = source.[col3] 
WHEN NOT MATCHED THEN 
    INSERT ([col1], [col2], [col3]) 
    VALUES (source.[col1],source.[col2], source.[col3]); 

でテーブルを移入していますそれはさておき、「SELECT D2、3、 『データ3』」文から、細かい移入、および無効な列名をスローします。どのようなアイデアか、それを修正する方法は?

おかげ

答えて

2

実行する必要があります。'

MERGE [dbo].[Data] as target 
USING 
(
SELECT '01' Col1, 1 Col2, 'Data1' Col3 
UNION ALL 
SELECT '03', 2, 'Data2' 
UNION ALL 
SELECT 'D2', 3, 'Data3' 
)AS source ([Col1], [Col2], [Col3]) 
ON (target.[Col2] = source.[Col2]) 
WHEN MATCHED THEN 
    UPDATE SET [Col1] = source.[Col1], 
       [col3] = source.[col3] 
WHEN NOT MATCHED THEN 
    INSERT ([col1], [col2], [col3]) 
    VALUES (source.[col1],source.[col2], source.[col3]); 
+0

あなたの先生が、私のヒーローです。 – Josh

1

あなたはこのように、引用符でD2が必要になります。その文字列の場合は、 'D2'。それはテーブルの列だ場合、あなたはあなたがCOL1に、この小さな文字を追加する必要がありSELECT D2, 3, 'Data3' FROM <table>

関連する問題