[SQL] (SQL Server에 대한 GROUP_CONCAT a.k.a)를 CSV로 병합 행 값
SQL(SQL Server에 대한 GROUP_CONCAT a.k.a)를 CSV로 병합 행 값
나는 테이블 등이 있습니다 :
EntityID AttributeID OptionText
5016 20 Paintings
5044 18 Female
5060 48 M
5060 48 F
5060 49 Apple
5060 49 Banana
5060 49 Cat
나는 보여줄 것이다 뷰를 만들려면 :
5016 20 Paintings
5044 18 Female
5060 48 M,F
5060 49 Apple, Banana, Cat
의미는 모든 엔터티 값은 쉼표로 구분하여 표시되어야 속성.
옵션의 수는 변화 될 수있다.
어떤 도움에 감사드립니다!
해결법
-
==============================
1.에는 EntityID의 각 쌍의 경우,의 AttributeId는 CSV를 생성하기 위해 XML 경로 트릭을 사용
에는 EntityID의 각 쌍의 경우,의 AttributeId는 CSV를 생성하기 위해 XML 경로 트릭을 사용
SELECT M.EntityID, M.AttributeID, SUBSTRING(CAST(foo.bar AS varchar(8000)), 2, 7999) AS Options FROM ( SELECT DISTINCT EntityID, AttributeID FROM MyTable ) M CROSS APPLY ( SELECT ',' + OptionText FROM MyTable M2 WHERE M.EntityID = M2.EntityID AND M.AttributeID= M2.AttributeID FOR XML PATH ('') ) foo(bar)
-
==============================
2.아래의 코드를 (라이브 데이터에 연습을하지 않아도 내가 모든 테스트 SQL을 포함 시켰습니다)보십시오. 현재 작업 예제를 볼 수 있습니다 http://data.stackexchange.com/stackoverflow/q/115141/
아래의 코드를 (라이브 데이터에 연습을하지 않아도 내가 모든 테스트 SQL을 포함 시켰습니다)보십시오. 현재 작업 예제를 볼 수 있습니다 http://data.stackexchange.com/stackoverflow/q/115141/
--Set up test table CREATE TABLE #Table1 (EntityID INT, AttributeID INT, OptionText VARCHAR(50)) INSERT INTO #Table1 SELECT 5030, 48, 'M' INSERT INTO #Table1 SELECT 5030, 48, 'F' --Begin actual working SQL SELECT T1.EntityID, T1.AttributeID, STUFF(( SELECT ', ' + T2.OptionText FROM #Table1 T2 WHERE T2.AttributeID = T1.AttributeID AND T2.EntityID = T1.EntityID FOR XML PATH('') ), 1, 2, '') [Attributes] FROM #Table1 T1 GROUP BY T1.EntityID, T1.AttributeID DROP TABLE #Table1
-
==============================
3.나는 3 개 가지 방법과 몇 가지 테스트를 수행했다 :
나는 3 개 가지 방법과 몇 가지 테스트를 수행했다 :
http://blog.feronovak.com/2011/10/multiple-values-in-one-column-aka.html
희망이 도움이.
from https://stackoverflow.com/questions/7755815/merge-row-values-into-a-csv-a-k-a-group-concat-for-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클에서 DATEDIFF 함수 (0) | 2020.05.15 |
---|---|
[SQL] 왜 C #을 플로트에서 SQL 플로트 다른입니다 (0) | 2020.05.15 |
[SQL] MySQL의 모든 필드를 교체 (0) | 2020.05.15 |
[SQL] MySQL을 TYPE을 CREATE (0) | 2020.05.15 |
[SQL] 선택 TOP X (또는 아래) MySQL의 숫자 값에 대한 백분율 (0) | 2020.05.14 |