Ich habe den folgenden SQL-Skript:T-SQL Split-String in Viele-zu-Eins-Beziehung?
DECLARE @temp table (
ID int IDENTITY(1, 1),
data nvarchar(100)
)
INSERT INTO @temp (data) VALUES ('a,b,c')
INSERT INTO @temp (data) VALUES ('d,e,f')
SELECT *
FROM @temp AS T
INNER JOIN
(SELECT *
FROM dbo.__StringSplit(T.data, ',', T.ID)) AS S
ON T.ID = S.RefID
Und nach dem Klicken auf Ausführen, ich habe diese:
Line 17 The multi-part identifier "T.data" could not be bound.
Ich habe auch die Nicht-Join-Version versucht und bekam den gleichen Fehler:
SELECT T.ID, S.Item AS dataItem
FROM @temp AS T, dbo.__StringSplit(T.data, ',', T.ID) AS S
WHERE T.ID = S.RefID
...
W Ich hatte erwartet, dass ich eine Tabelle mit IDs bekommen sollte, die von @ test.ID kommen, und jede kommagetrennte Variable in @ test.data wird in ihre eigenen Datensätze aufgeteilt und ihr Wert in das dataItem Feld geschrieben.
Wie kann ich das erreichen?
Muss ich Cursor verwenden?
Ich habe die dbo .__ Stringtabellenwertfunktion Implementierung bei http://pastebin.com/f7dd6350f
Dank geklebt!
Sie werden immer noch das Kreuz anwenden, aber ersetzen Sie die Split-String-Funktion mit einem von dem Link in meiner Antwort. –