반응형
SQL Server에서 group_concat을 사용하여 쿼리를 만드는 방법
이 질문에 이미 답변이 있습니다.
나는 SQL 서버에서 우리가 Group_concat
기능을 사용할 수 없다는 것을 알고 있지만 여기에 Group_Concat
내 쿼리 가 필요한 한 가지 문제가 있습니다. 나는 몇 가지 논리를 찾았지만 수정할 수는 없습니다.
select m.maskid,m.maskname,m.schoolid,s.schoolname,
md.maskdetail
from tblmask m join school s on s.id = m.schoolid
join maskdetails md on m.maskid = md.maskid
order by m.maskname ;
그것은 나에게 다음과 같은 결과를 준다.
처음 3 개 행을보세요. maskid, maskname, schoolid, schoolname은 동일하지만 maskdetail은 다르므로 마지막 열에 maskid별로 모든 maskdetail을 포함 할 수있는 행 하나를 원합니다.
나는 내 출력을 원한다.
그래서 질문을하는 동안 저를 도와주세요.
미리 감사드립니다.
질문:
SELECT
m.maskid
, m.maskname
, m.schoolid
, s.schoolname
, maskdetail = STUFF((
SELECT ',' + md.maskdetail
FROM dbo.maskdetails md
WHERE m.maskid = md.maskid
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM dbo.tblmask m
JOIN dbo.school s ON s.ID = m.schoolid
ORDER BY m.maskname
추가 정보:
Select
A.maskid
, A.maskname
, A.schoolid
, B.schoolname
, STUFF((
SELECT ',' + T.maskdetail
FROM dbo.maskdetails T
WHERE A.maskid = T.maskid
FOR XML PATH('')), 1, 1, '') as maskdetail
FROM dbo.tblmask A
JOIN dbo.school B ON B.ID = A.schoolid
Group by A.maskid
, A.maskname
, A.schoolid
, B.schoolname
다음과 같이 함수 선언 Scalar-Valued Function
에서 사용할 수도 있습니다 MSSQL 2008
.
CREATE FUNCTION [dbo].[FunctionName]
(@MaskId INT)
RETURNS Varchar(500)
AS
BEGIN
DECLARE @SchoolName varchar(500)
SELECT @SchoolName =ISNULL(@SchoolName ,'')+ MD.maskdetail +', '
FROM maskdetails MD WITH (NOLOCK)
AND MD.MaskId=@MaskId
RETURN @SchoolName
END
그리고 최종 쿼리는 다음과 같습니다.
SELECT m.maskid,m.maskname,m.schoolid,s.schoolname,
(SELECT [dbo].[FunctionName](m.maskid)) 'maskdetail'
FROM tblmask m JOIN school s on s.id = m.schoolid
ORDER BY m.maskname ;
참고 : 전체 테이블 구조를 모르기 때문에 함수를 변경해야 할 수도 있습니다.
아래 쿼리를 실행하십시오. 귀하의 경우 STUFF 및 GROUP BY가 필요하지 않습니다.
Select
A.maskid
, A.maskname
, A.schoolid
, B.schoolname
, CAST((
SELECT T.maskdetail+','
FROM dbo.maskdetails T
WHERE A.maskid = T.maskid
FOR XML PATH(''))as varchar(max)) as maskdetail
FROM dbo.tblmask A
JOIN dbo.school B ON B.ID = A.schoolid
참고 URL : https://stackoverflow.com/questions/17591490/how-to-make-a-query-with-group-concat-in-sql-server
반응형
'code' 카테고리의 다른 글
배열의 모든 요소를 Java의 특정 값으로 초기화하는 방법 (0) | 2020.08.20 |
---|---|
다른 프로필이 활성화 된 경우에도 activeByDefault 인 Maven 프로필을 활성 상태로 유지하는 방법은 무엇입니까? (0) | 2020.08.19 |
더 나은 점 : @SuppressLint 또는 @TargetApi? (0) | 2020.08.19 |
메서드 선언은 PHP의 부모 메서드와 호환되어야합니다. (0) | 2020.08.19 |
GIT에서 2 개의 분기를 병합 (0) | 2020.08.19 |