tlberlus
Goto Top

MS SQL 2008 - Insert mit Duplikat-Kontrolle

Hallo Zusammen,

ich muss von einer Sicht/View in eine Tabelle innerhalb einer anderen Datenbank eintragen.
Mein Problem ist, dass die Primärschlüssel der Tabelle in der View mehrfach vorkommen können.

Bspw. ist die fortlaufende Nummer in der View der Primärschlüssel der Tabelle. Diese kommt in der View 2x vor, allerdings fällt das erst beim Übertragen in die Tabelle auf.
Der Plan ist, per SQL-Befehl zu prüfen, ob der Schlüssel bereits vorhanden ist. Falls Ja, verwirf die Zeile und prüfe die nächste.

Mein SQL-Skript sieht so aus, allerdings funktioniert es nicht wirklich:

INSERT INTO [SmartFix_Matching_DB].[smartfix].[SFI_VENDOR]
			(
	    [VE_VENDOR_NO]
           ,[VE_NAME]
           ,[VE_STREET]
           ,[VE_ZIPCODE]
           ,[VE_CITY]
           ,[VE_COUNTRY]
           ,[VE_TELEFONE_NO]
           ,[VE_FAX_NO]
           ,[VE_EMAIL]
           ,[VE_BANK]
           ,[VE_SWIFT_BIC]
           ,[VE_IBAN]
           )
	SELECT 
	    [VE_VENDOR_NO]
           ,[VE_NAME]
           ,[VE_STREET]
           ,[VE_ZIPCODE]
           ,[VE_CITY]
           ,[VE_COUNTRY]
           ,[VE_TELEFONE_NO]
           ,[VE_FAX_NO]
           ,[VE_EMAIL]
           ,[VE_BANK]
           ,[VE_SWIFT_BIC]
           ,[VE_IBAN]
	 FROM testData.dbo.SFI_VENDOR2

	 WHERE [VE_VENDOR_NO] not in (Select [VE_VENDOR_NO] from [SmartFix_Matching_DB].[smartfix].[SFI_VENDOR])
GO

Leider ist mein SQL etwas eingerostet, daher komme ich momentan nicht weiter.

Grüße,

Tiberius

Content-ID: 291803

Url: https://administrator.de/contentid/291803

Ausgedruckt am: 22.11.2024 um 00:11 Uhr

emeriks
emeriks 28.12.2015 um 14:22:51 Uhr
Goto Top
Hi,
schau Dir mal "SELECT DISTINCT" an.

E.
TlBERlUS
TlBERlUS 28.12.2015 um 14:39:39 Uhr
Goto Top
Zitat von @emeriks:

Hi,
schau Dir mal "SELECT DISTINCT" an.

Danke für die Antwort, aber soweit ich das nachstellen kann, hilft mir das nur, wenn die gesamte Zeile Identisch ist.
In diesem Fall ist es so, dass die Zeile bis auf die Bankdaten (BIC/IBAN) identisch ist.
WEnn ich daher gehe und
	SELECT 
	    [VE_VENDOR_NO]
           ,[VE_NAME]
           ,[VE_STREET]
           ,[VE_ZIPCODE]
           ,[VE_CITY]
           ,[VE_COUNTRY]
           ,[VE_TELEFONE_NO]
           ,[VE_FAX_NO]
           ,[VE_EMAIL]
           ,[VE_BANK]
           ,[VE_SWIFT_BIC]
           ,[VE_IBAN]
	 FROM testData.dbo.SFI_VENDOR2


eingebe, habe ich dasselbe Ergebnis wie bei meiner anderen Abfrage.
emeriks
emeriks 28.12.2015 um 14:50:09 Uhr
Goto Top
Ich nehme an, "VE_VENDOR_NO" ist dann in der Zieltabelle der Primärschlüssel? Oder wie?

Du wirst in der Zieltabelle den Primärschlüssel ändern müssen, wenn die einzufügenden Daten darüber nicht eindeutig sind. Andern Falls würde es darauf hinaus laufen, dass Du aus der Quelle (die View) nicht alle Daten übernehmen kannst.

Oder Du musst im Ziel die Bankdaten in eine zweite Tabelle auslagern und diese mit der Adress-Tabelle verknüpfen.
TlBERlUS
TlBERlUS 28.12.2015 um 14:53:34 Uhr
Goto Top
Zitat von @emeriks:

Ich nehme an, "VE_VENDOR_NO" ist dann in der Zieltabelle der Primärschlüssel? Oder wie?
Jup
...Andern Falls würde es darauf hinaus laufen, dass Du aus der Quelle (die View) nicht alle Daten übernehmen kannst.
Das ist momentan der Plan. Wenn 2+ Datensätze mit gleichem Schlüssel daherkommen, soll der erste verwendet werden, der Rest wird ignoriert.