[SQL] 쉼표 하나의 열 값을 분리 - SQL SERVER를
SQL쉼표 하나의 열 값을 분리 - SQL SERVER를
Customer Table -------------- ID Name 1 James 2 Peter
Order Table --------------- OrderId CustId 100 1 101 1 102 2
나는 쿼리를 작성할 수있는 방법이이 같은 반환 뭔가
ID,Name,ListofOrders 1,James,"100,101" 2,Peter,"102"
사이베이스에서 나는 함수 호출 목록을 가지고 내가 사용할 수 있지만 SQL Server의 유사한 기능을 찾을 해달라고하는
해결법
-
==============================
1.시도하십시오 :
시도하십시오 :
select ID, [Name], (select OrderID+',' from OrderTable where CustID=ID group by OrderID for xml path('')) AS ListOfOrders From CustomerTable
-
==============================
2.아래와 같이 사용자 정의 함수 만들기
아래와 같이 사용자 정의 함수 만들기
CREATE FUNCTION [dbo].[CommaSeperatedOrderIDs](@CustId INT) returns varchar(Max) AS BEGIN DECLARE @CommaSeperatedValues VARCHAR(MAX) SELECT @CommaSeperatedValues = COALESCE(@CommaSeperatedValues+',' , '') + OrderID FROM OrderTable WHERE CustId = @CustId RETURN @CommaSeperatedValues END
그리고,
select ID, [Name], ([dbo].[CommaSeperatedOrderIDs](ID)) AS ListofOrders From CustomerTable
-
==============================
3.아주 간단하고 편리한 솔루션은 아래 링크를 제공.
아주 간단하고 편리한 솔루션은 아래 링크를 제공.
http://tejasnshah.wordpress.com/2009/02/28/sql-server-get-column-values-as-comma-seperated-list-using-xml-path-instead-of-udfs-using-sql-coalesce/
내가 여기를 복사 할 수 있도록 링크에 기록 된 SQL 쿼리는 ... 이미지입니다.
-
==============================
4.셰이크 하리스 '링크에서 자세한 내용을 추가.
셰이크 하리스 '링크에서 자세한 내용을 추가.
이 테이블을 감안할 때 :
출력을 같이 얻으려면 :
다음 SQL을 사용합니다 :
SELECT field1, Substring(convert(varchar(100), ( SELECT (', ' + field2) FROM #test t2 WHERE t1.field1 = t2.field1 ORDER BY field1, field2 FOR XML PATH( '' ) )), 3, 1000 ) FROM #test t1 GROUP BY field1
WIDEMEMO 필드가 표시 될 수 있도록 내가 문자열로 변환 기능을 추가 (SQL 서버)
from https://stackoverflow.com/questions/12435284/comma-separated-values-in-one-column-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 왼쪽 필터링 한 후 행을 잃고 가입 (0) | 2020.07.10 |
---|---|
[SQL] 다람쥐 PostgreSQL의 함수 정의 : 종단되지 않은 달러 인용 된 문자열 (0) | 2020.07.10 |
[SQL] XML 데이터 형식 방법 "값"의 인수 하나는 문자열 리터럴이어야합니다 (0) | 2020.07.10 |
[SQL] 이전과 현재 행의 차이를 찾기 SQL은 (0) | 2020.07.10 |
[SQL] # 1366 - 잘못된 정수 값 : MYSQL (0) | 2020.07.10 |