반응형
SQL 서버에서 group_concat을 사용하여 쿼리를 만드는 방법
sql 서버에서는 사용할 수 없는 것을 알고 있습니다.Group_concat
하지만 여기 내가 해야 할 문제가 하나 있다.Group_Concat
질문입니다.구글에서 어떤 논리를 찾았지만 수정할 수 없습니다.SQL 쿼리는
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 ;
주의: 전체 테이블 구조를 모르기 때문에 기능을 변경해야 할 수 있습니다.
다음 쿼리를 실행해 주세요.이 경우 STUP 및 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
반응형
'it-source' 카테고리의 다른 글
Oracle 11g(클라이언트)을 제거/완전 삭제하는 방법 (0) | 2023.04.11 |
---|---|
Windows의 Cygwin 쉘을 PowerShell에서 교체할 준비가 되었습니까? (0) | 2023.04.11 |
파일에서 #로 시작하는 모든 줄 삭제 (0) | 2023.04.11 |
대소문자를 구분하지 않는 비교 NSString (0) | 2023.04.11 |
같은 테이블의 한 열에서 다른 열로 데이터를 복사하려면 어떻게 해야 합니까? (0) | 2023.04.11 |