SQL Server 2008以降を使用している場合は、MERGEステートメントを使用できます。次のMicrosoft TechNetの記事はかなりよくMERGE文について説明します。 https://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx
をあなたのクエリは次のようなものになります。
BULK INSERT #tmp_x FROM 'path\to\file1.csv' WITH (FIELDTERMINATOR =';',ROWTERMINATOR ='\n' ,FIRSTROW = 2);
MERGE TTT AS T
USING #tmp_x AS S
ON (T.Artikelnummer = S.Artikelnummer)
WHEN NOT MATCHED BY TARGET
THEN INSERT(
[Artikelnummer]
,[Artikelbenämning]
,[Count of Ordernummer]
,[Sum of Antal beställda]
,[Min of Skapat Datum]
,[Max of Planerat Plockdatum]
,[Kommentar Inköpsplanerare]
)
VALUES(
S.[Artikelnummer]
,S.[Artikelbenämning]
,S.[Count of Ordernummer]
,S.[Sum of Antal beställda]
,S.[Min of Skapat Datum]
,S.[Max of Planerat Plockdatum]
,S.[Kommentar Inköpsplanerare]
)
WHEN MATCHED
THEN UPDATE
SET T.[Artikelbenämning] = S.[Artikelbenämning]
,T.[Count of Ordernummer] = S.[Count of Ordernummer]
,T.[Sum of Antal beställda] = S.[Sum of Antal beställda]
,T.[Min of Skapat Datum] = S.[Min of Skapat Datum]
,T.[Max of Planerat Plockdatum] = S.[Max of Planerat Plockdatum]
,T.[Kommentar Inköpsplanerare] = S.[Kommentar Inköpsplanerare];
,T.[Kommentar Inköpsplanerare] = ISNULL(S.[Kommentar Inköpsplanerare], T.[Kommentar Inköpsplanerare]);
-- Example exludes records where [Kommentar Inköpsplanerare] IS NULL from the merge
MERGE TTT AS T
USING (
SELECT
[Artikelnummer]
,[Artikelbenämning]
,[Count of Ordernummer]
,[Sum of Antal beställda]
,[Min of Skapat Datum]
,[Max of Planerat Plockdatum]
,[Kommentar Inköpsplanerare]
FROM #tmp_x
WHERE [Kommentar Inköpsplanerare] IS NOT NULL
)AS S
ON (T.Artikelnummer = S.Artikelnummer)
WHEN NOT MATCHED BY TARGET
THEN INSERT(
[Artikelnummer]
,[Artikelbenämning]
,[Count of Ordernummer]
,[Sum of Antal beställda]
,[Min of Skapat Datum]
,[Max of Planerat Plockdatum]
,[Kommentar Inköpsplanerare]
)
VALUES(
S.[Artikelnummer]
,S.[Artikelbenämning]
,S.[Count of Ordernummer]
,S.[Sum of Antal beställda]
,S.[Min of Skapat Datum]
,S.[Max of Planerat Plockdatum]
,S.[Kommentar Inköpsplanerare]
)
WHEN MATCHED
THEN UPDATE
SET T.[Artikelbenämning] = S.[Artikelbenämning]
,T.[Count of Ordernummer] = S.[Count of Ordernummer]
,T.[Sum of Antal beställda] = S.[Sum of Antal beställda]
,T.[Min of Skapat Datum] = S.[Min of Skapat Datum]
,T.[Max of Planerat Plockdatum] = S.[Max of Planerat Plockdatum]
,T.[Kommentar Inköpsplanerare] = S.[Kommentar Inköpsplanerare];
-- Example ignores updates on the [Kommentar Inköpsplanerare] column if the [Kommentar Inköpsplanerare] IS NULL in the source dataset
MERGE TTT AS T
USING #tmp_x AS S
ON (T.Artikelnummer = S.Artikelnummer)
WHEN NOT MATCHED BY TARGET
THEN INSERT(
[Artikelnummer]
,[Artikelbenämning]
,[Count of Ordernummer]
,[Sum of Antal beställda]
,[Min of Skapat Datum]
,[Max of Planerat Plockdatum]
,[Kommentar Inköpsplanerare]
)
VALUES(
S.[Artikelnummer]
,S.[Artikelbenämning]
,S.[Count of Ordernummer]
,S.[Sum of Antal beställda]
,S.[Min of Skapat Datum]
,S.[Max of Planerat Plockdatum]
,S.[Kommentar Inköpsplanerare]
)
WHEN MATCHED
THEN UPDATE
SET T.[Artikelbenämning] = S.[Artikelbenämning]
,T.[Count of Ordernummer] = S.[Count of Ordernummer]
,T.[Sum of Antal beställda] = S.[Sum of Antal beställda]
,T.[Min of Skapat Datum] = S.[Min of Skapat Datum]
,T.[Max of Planerat Plockdatum] = S.[Max of Planerat Plockdatum]
,T.[Kommentar Inköpsplanerare] = ISNULL(S.[Kommentar Inköpsplanerare], T.[Kommentar Inköpsplanerare]);
WHEREステートメントをINNER JOINに変更して、それがあなたのために機能するかどうかを確認してください。 –