Die Aufgabe, die ich versuche zu erreichen, ist das Folgende: Ich habe eine Tabelle mit zwei Spalten: - U0 und U1. Die Werte in den zwei Spalten werden manchmal wiederholt, was bedeutet, dass ein Wert sowohl in u0 als auch in u1 erscheinen würde.SQL :: Match doppelte Werte und verketten die Ergebnisse in einer durch Komma getrennten Zeichenfolge
u0 u1
1 A B
2 B C
3 D B
4 B D
5 F E
Wenn die Tabelle eine Zeile hat: U0 = A, u1 = B und eine weitere Zeile u0 = B, u1 = C, dann können wir, dass ein schließen, B und C gehören alle zu dem gleichen Benutzer. Die Idee besteht darin, eine Tabelle mit einer Spalte zu erstellen, in der jede Zeile eine Liste von U-Einträgen enthält, die zu einem Benutzer in einer durch Kommas getrennten Zeichenfolge gehören.
Desiered Ausgang:
IDs
u0 A,B,C,D
u1 E,F,G
Die Art, wie ich die Aufgabe genähert haben, ist mit den folgenden:
select
distinct
stuff((
select ',' + u0
from [db1]
where u0 like u1
for xml path('')
),1,1,'')as uids
from [db1]
Aber mit dieser Abfrage in BigQuery erhalte ich die Fehlermeldung:
Error: Encountered " "FOR" "for "" at line 7, column 9. Was expecting: ")" ...
Ich habe auch mit COALESCE versucht, aber ohne Erfolg
SELECT uids = COALESCE(u1 + ',','') + u0
FROM [db1]
WHERE u0 in u1
und bekam diese Fehlermeldung zurück:
Error: Encountered " "IN" "in "" at line 3, column 12. Was expecting:
Vielen Dank im Voraus.
Ihre Tabellenreferenz ist eindeutig Legacy BigQuery, also entfernte ich die unangemessenen Datenbanken. –
Aktuelle Syntax: [String_agg] (https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#string_agg) ... Alte Syntax: [Group_concat] (https: // cloud.google.com/bigquery/docs/reference/legacy-sql#group_concat) – JohnHC
Sie sollten GROUP_CONCAT sql Funktion verwenden, überprüfen Sie diesen Link http://stackoverflow.com/questions/42418641/split-row-results-to-column/ 42419232 # 42419232 –