[SQL] 어떻게 열 (T-SQL)에서 여러 값을 반환?
SQL어떻게 열 (T-SQL)에서 여러 값을 반환?
나는 사용자 당 여러 개의 별칭을 가진 테이블 UserAliases (사용자 아이디, 별칭)가 있습니다. 나는 트릭은 하나의 열에서 그들 모두를 반환하는 것입니다, 그것을 쿼리하고 해당 사용자의 모든 별칭을 반환해야합니다.
예:
UserId/Alias
1/MrX
1/MrY
1/MrA
2/Abc
2/Xyz
나는 다음과 같은 형식의 쿼리 결과를 원하는 :
UserId/Alias
1/ MrX, MrY, MrA
2/ Abc, Xyz
감사합니다.
나는 SQL 서버 2005을 사용하고 있습니다.
추신. 실제 T-SQL 쿼리 주시면 감사하겠습니다 :)
해결법
-
==============================
1.당신은 유착과 기능을 사용할 수 있습니다.
당신은 유착과 기능을 사용할 수 있습니다.
CREATE FUNCTION [dbo].[GetAliasesById] ( @userID int ) RETURNS varchar(max) AS BEGIN declare @output varchar(max) select @output = COALESCE(@output + ', ', '') + alias from UserAliases where userid = @userID return @output END GO SELECT UserID, dbo.GetAliasesByID(UserID) FROM UserAliases GROUP BY UserID GO
-
==============================
2.음 ... 나는 대답이 이미 받아 들여진 것을 볼 수 ...하지만 난 당신이 어쨌든 다른 솔루션을 참조해야한다고 생각 :
음 ... 나는 대답이 이미 받아 들여진 것을 볼 수 ...하지만 난 당신이 어쨌든 다른 솔루션을 참조해야한다고 생각 :
/* EXAMPLE */ DECLARE @UserAliases TABLE(UserId INT , Alias VARCHAR(10)) INSERT INTO @UserAliases (UserId,Alias) SELECT 1,'MrX' UNION ALL SELECT 1,'MrY' UNION ALL SELECT 1,'MrA' UNION ALL SELECT 2,'Abc' UNION ALL SELECT 2,'Xyz' /* QUERY */ ;WITH tmp AS ( SELECT DISTINCT UserId FROM @UserAliases ) SELECT LEFT(tmp.UserId, 10) + '/ ' + STUFF( ( SELECT ', '+Alias FROM @UserAliases WHERE UserId = tmp.UserId FOR XML PATH('') ) , 1, 2, '' ) AS [UserId/Alias] FROM tmp /* -- OUTPUT UserId/Alias 1/ MrX, MrY, MrA 2/ Abc, Xyz */
-
==============================
3.이미 StackOverflow의에이 스레드를 살펴 보라는 편리하게 당신에게 T-SQL 예제를 제공합니다.
이미 StackOverflow의에이 스레드를 살펴 보라는 편리하게 당신에게 T-SQL 예제를 제공합니다.
-
==============================
4.이것은 당신이 UDF를 필요로하지 않고 무엇을해야하는 가장 빠르고 간단한 방법 중 하나입니다 : http://weblogs.sqlteam.com/mladenp/archive/2007/06/01/60220.aspx
이것은 당신이 UDF를 필요로하지 않고 무엇을해야하는 가장 빠르고 간단한 방법 중 하나입니다 : http://weblogs.sqlteam.com/mladenp/archive/2007/06/01/60220.aspx
이 빨리 정말 큰 데이터 세트에있는 숫자 테이블을 사용 하나 개 다른 방법이있다하지만 난 당신이 필요합니다 생각하지 않습니다.
-
==============================
5.COALESCE와 병합 : 내 상사가 이런 식으로 다시 2003에 대한 기사를 썼다
COALESCE와 병합 : 내 상사가 이런 식으로 다시 2003에 대한 기사를 썼다
-
==============================
6.
DECLARE @Str varchar(500) SELECT @Str=COALESCE(@Str,'') + CAST(ID as varchar(10)) + ',' FROM dbo.fcUser SELECT @Str
-
==============================
7.당신은 임시 테이블의 필드에 커서 APPEND와 행을 하나 루프, 또는 당신은 필드을 연결하기 위해 병합 기능을 사용할 수 있습니다.
당신은 임시 테이블의 필드에 커서 APPEND와 행을 하나 루프, 또는 당신은 필드을 연결하기 위해 병합 기능을 사용할 수 있습니다.
-
==============================
8.죄송합니다, 질문의 잘못을 처음 읽었다. 당신이 뭔가를 할 수 있습니다 :
죄송합니다, 질문의 잘못을 처음 읽었다. 당신이 뭔가를 할 수 있습니다 :
declare @result varchar(max) --must "initialize" result for this to work select @result = '' select @result = @result + alias FROM aliases WHERE username='Bob'
-
==============================
9.당신이 찾고있는 무엇을 같은 GROUP_CONCAT () 소리.
당신이 찾고있는 무엇을 같은 GROUP_CONCAT () 소리.
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
당신은 MSSQL에있어 이후, 난 그냥 "GROUP_CONCAT 경우 MSSQL을"인터넷 검색 및 재 작성 GROUP_CONCAT 기능에 히트 한 무리를 발견했다. 여기 내가 찾은 안타 중 하나입니다 :
http://www.stevenmapes.com/index.php?/archives/23-Recreating-MySQL-GROUP_CONCAT-In-MSSQL-Cross-Tab-Query.html
from https://stackoverflow.com/questions/122942/how-to-return-multiple-values-in-one-column-t-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL은 계산 나이 (이노) (0) | 2020.03.22 |
---|---|
[SQL] 오라클에서 문자열 연결 연산자는 무엇입니까? (0) | 2020.03.22 |
[SQL] PostgreSQL을 함께 데이터베이스 간 쿼리를 수행 할 수? (0) | 2020.03.22 |
[SQL] PostgreSQL의에서 중복 레코드 삭제 (0) | 2020.03.22 |
[SQL] 안드로이드 SQLite는 것은 특정 행을 업데이트하는 방법 (0) | 2020.03.22 |