달성하고자하는 작업은 다음과 같습니다. 두 개의 열이있는 테이블이 있습니다 : - u0 및 u1. 두 열의 값이 반복되는 경우가 있는데, u0과 u1에 모두 하나의 값이 표시됩니다. 테이블이 하나 개의 로우가있는 경우SQL :: 중복 값을 일치시키고 쉼표로 구분 된 문자열로 결과를 연결하십시오.
u0 u1
1 A B
2 B C
3 D B
4 B D
5 F E
: U0 = A, U1 = B와 다른 행 U0 = B, U1이 = C가 우리가 있다는 결론을 내릴 수 있고, B 및 C 모두가 동일한 사용자에 속한다. 모든 행에 한 사용자에게 속한 U 항목 목록이 쉼표로 구분 된 문자열로 포함 된 열이있는 표를 만드는 것이 좋습니다.
Desiered 출력 :
select
distinct
stuff((
select ',' + u0
from [db1]
where u0 like u1
for xml path('')
),1,1,'')as uids
from [db1]
을하지만 BigQuery에이 쿼리 나 오류 얻을 :
을Error: Encountered " "FOR" "for "" at line 7, column 9. Was expecting: ")" ...
IDs
u0 A,B,C,D
u1 E,F,G
내가 작업을 접근 한 방법은 다음과 같이이다
나는 COALESCE도 시도했지만 성공하지 못했습니다.
SELECT uids = COALESCE(u1 + ',','') + u0
FROM [db1]
WHERE u0 in u1
및 다시이 오류 메시지를 받았습니다 :
미리 감사드립니다.Error: Encountered " "IN" "in "" at line 3, column 12. Was expecting:
테이블 참조가 분명히 기존 BigQuery이므로 부적절한 데이터베이스를 제거했습니다. –
현재 구문 : [String_agg] (https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#string_agg) ... 이전 구문 : [Group_concat] (https : // cloud.google.com/bigquery/docs/reference/legacy-sql#group_concat) – JohnHC
GROUP_CONCAT sql 함수를 사용해야합니다.이 링크를 확인하십시오. http://stackoverflow.com/questions/42418641/split-row-results-to-column/ 42419232 # 42419232 –