2016-04-13 16 views
1

Ich versuche, in eine neue Tabelle aus der hochgeladenen Datei Bulk einzufügen, aber ich möchte auch eine Daten aus anderen Tabelle mit linken Join einfügen, können Sie überprüfen, was ist falsch mit meiner Abfrage?SQL Server Bulk einfügen linken Join

INSERT INTO gen048_ACCNUMS (accnum) 
    SELECT DISTINCT REPLACE(dbo.fn_Parsename(WHOLEROW,'|',10), CHAR(9), '') 
    FROM #temp1 

set @sql = ' 
    INSERT INTO '[email protected]+' (ftype, ccode, refdate, dupload, accname, add1, add2, zip, add3, add4, add5, accdate, book, solcode) 
    SELECT 

     ''GEN048'', 
     '''', 
     ('[email protected]+'), 
     (SELECT CONVERT(VARCHAR(12),GETDATE(), 101)), 
     dbo.fn_Parsename(WHOLEROW,''|'',0), 
     dbo.fn_Parsename(WHOLEROW,''|'',1), 
     dbo.fn_Parsename(WHOLEROW,''|'',2), 
     dbo.fn_Parsename(WHOLEROW,''|'',3), 
     dbo.fn_Parsename(WHOLEROW,''|'',4), 
     dbo.fn_Parsename(WHOLEROW,''|'',5), 
     dbo.fn_Parsename(WHOLEROW,''|'',6), 
     dbo.fn_Parsename(WHOLEROW,''|'',7), 

     (select substring(dbo.fn_Parsename(WHOLEROW,''|'',8), 1, 1)), 
     (select substring(dbo.fn_Parsename(WHOLEROW,''|'',8), 1, 3)), 

     (SELECT branch 
      FROM '[email protected]+' 
      LEFT JOIN BRANCH_LIST ON '[email protected]+'.solcode = BRANCH_LIST.solcode) 

    FROM #temp1' 

     print @sql 
     exec (@sql) 

    SELECT 'File has been successfully uploaded', @fileDate,'success' as msg 

END 

Dies ist die SQL-Nachricht

VON # temp1 Subquery mehr als 1 Wert zurückgegeben. Dies ist nicht zulässig, wenn die Unterabfrage folgt =,! =, <, < =,>,> = oder wenn die Unterabfrage als Ausdruck verwendet wird.

+4

Wird ein Fehler erzeugt? Tut es das Falsche? –

+1

können Sie auch die Ausgabe von 'print @ sql' veröffentlichen? – Squirrel

+0

Ohne uns die genaue Problem/Fehlermeldung zu sagen, ist es schwer für uns, Ihnen zu helfen. – Greg

Antwort

0

Es sieht für mich wie Sie ein Komma vor dieser Unterabfrage fehlt:

(SELECT Zweig FROM '+ @ Source +' LEFT JOIN BRANCH_LIST ON'[email protected]+'.solcode = BRANCH_LIST. solcode)

Der Fehler, den Sie erhalten, liegt daran, dass diese Unterabfrage mehr als eine Zeile zurückgibt und sich im ausgewählten Teil der Abfrage befindet. Sie müssen herausfinden, wie Sie nur eine Zeile erhalten (z. B. TOP (1)) ... oder zurück zum Zeichenbrett, um Ihre Aufgabe zu erledigen.

Ich würde auch hinzufügen, dass, wenn diese Unterabfrage nicht von Werten aus Ihrer "Haupt" -Abfrage abhängt, Sie möglicherweise eine Kreuz-Verknüpfung mit der Unterabfrage in der FROM-Klausel verwenden möchten.