SQL Server : 여러 행을 하나의 행으로 결합
이와 같은 SQL 쿼리가 있습니다.
SELECT *
FROM Jira.customfieldvalue
WHERE CUSTOMFIELD = 12534
AND ISSUE = 19602
그리고 그것이 결과입니다.
내가 원하는 것은; 하나의 행 (셀)에 모든 의가 결합 STRINGVALUE
되어 표시되며 쉼표로 구분됩니다. 이렇게
SELECT --some process with STRINGVALUE--
FROM Jira.customfieldvalue
WHERE CUSTOMFIELD = 12534
AND ISSUE = 19602
Araç Listesi (C2, K1 vb.Belgeler; yoksa Ruhsat Fotokopileri), Min. 5
araç plakası için İnternet Sorgusu, Son 3 Yıla Ait Onaylı Yıl Sonu
Bilanço + Gelir Tablosu, Son Yıl (Yıl Sonuna ait) Detay Mizanı, İçinde
Bulunduğumuz Yıla ait Ara Dönem Geçici Vergi Beyannamesi, Bayi Yorum
E-Maili, Proforma Fatura
어떻게 할 수 있습니까?
몇 가지 방법이 있습니다.
통합 된 문자열 값만 반환하려면 빠르고 쉬운 방법입니다.
DECLARE @combinedString VARCHAR(MAX)
SELECT @combinedString = COALESCE(@combinedString + ', ', '') + stringvalue
FROM jira.customfieldValue
WHERE customfield = 12534
AND ISSUE = 19602
SELECT @combinedString as StringValue
결합 된 문자열을 반환합니다.
XML 메소드 중 하나를 시도해 볼 수도 있습니다.
SELECT DISTINCT Issue, Customfield, StringValues
FROM Jira.customfieldvalue v1
CROSS APPLY ( SELECT StringValues + ','
FROM jira.customfieldvalue v2
WHERE v2.Customfield = v1.Customfield
AND v2.Issue = v1.issue
ORDER BY ID
FOR XML PATH('') ) D ( StringValues )
WHERE customfield = 12534
AND ISSUE = 19602
다음과 같이 For XML Path와 STUFF를 결합하면됩니다.
SELECT (STUFF((
SELECT ', ' + StringValue
FROM Jira.customfieldvalue
WHERE CUSTOMFIELD = 12534
AND ISSUE = 19602
FOR XML PATH('')
), 1, 2, '')
) AS StringValue
MySql에는 GROUP_CONCAT라는 편리한 방법이 있습니다. SQL Server에 해당하는 것은 존재하지 않지만 SQLCLR을 사용하여 직접 작성할 수 있습니다. 다행히 누군가 이미 당신을 위해 그렇게했습니다.
그러면 쿼리가 다음과 같이 바뀝니다 (btw가 훨씬 더 좋은 구문입니다).
SELECT CUSTOMFIELD, ISSUE, dbo.GROUP_CONCAT(STRINGVALUE)
FROM Jira.customfieldvalue
WHERE CUSTOMFIELD = 12534 AND ISSUE = 19602
GROUP BY CUSTOMFIELD, ISSUE
But please note that this method is good for at the most 100 rows within a group. Beyond that, you'll have major performance problems. SQLCLR aggregates have to serialize any intermediate results and that quickly piles up to quite a lot of work. Keep this in mind!
Interestingly the FOR XML
doesn't suffer from the same problem but instead uses that horrendous syntax.
I believe for databases which support listagg function, you can do:
select id, issue, customfield, parentkey, listagg(stingvalue, ',') within group (order by id)
from jira.customfieldvalue
where customfield = 12534 and issue = 19602
group by id, issue, customfield, parentkey
Using MySQL inbuilt function group_concat() will be a good choice for getting the desired result. The syntax will be -
SELECT group_concat(STRINGVALUE)
FROM Jira.customfieldvalue
WHERE CUSTOMFIELD = 12534
AND ISSUE = 19602
Before you execute the above command make sure you increase the size of group_concat_max_len else the the whole output may not fit in that cell.
group_concat_max_len의 값을 설정하려면 아래 명령을 실행하십시오.
SET group_concat_max_len = 50000;
그에 따라 값 50000을 변경하고 필요에 따라 더 높은 값으로 늘릴 수 있습니다.
CREATE VIEW [dbo].[ret_vwSalariedForReport]
AS
WITH temp1 AS (SELECT
salaried.*,
operationalUnits.Title as OperationalUnitTitle
FROM
ret_vwSalaried salaried LEFT JOIN
prs_operationalUnitFeatures operationalUnitFeatures on salaried.[Guid] = operationalUnitFeatures.[FeatureGuid] LEFT JOIN
prs_operationalUnits operationalUnits ON operationalUnits.id = operationalUnitFeatures.OperationalUnitID
),
temp2 AS (SELECT
t2.*,
STUFF ((SELECT ' - ' + t1.OperationalUnitTitle
FROM
temp1 t1
WHERE t1.[ID] = t2.[ID]
For XML PATH('')), 2, 2, '') OperationalUnitTitles from temp1 t2)
SELECT
[Guid],
ID,
Title,
PersonnelNo,
FirstName,
LastName,
FullName,
Active,
SSN,
DeathDate,
SalariedType,
OperationalUnitTitles
FROM
temp2
GROUP BY
[Guid],
ID,
Title,
PersonnelNo,
FirstName,
LastName,
FullName,
Active,
SSN,
DeathDate,
SalariedType,
OperationalUnitTitles
참고 URL : https://stackoverflow.com/questions/8005846/sql-server-combining-multiple-rows-into-one-row
'programing tip' 카테고리의 다른 글
Git을 사용하여 두 가지 브랜치에 커밋 푸시 (0) | 2020.12.12 |
---|---|
Haskell 경량 스레드 오버 헤드 및 멀티 코어에서 사용 (0) | 2020.12.12 |
PHP 알림 : 정의되지 않은 오프셋 : 데이터를 읽을 때 배열이있는 1 (0) | 2020.12.11 |
IB Designable의 인스턴스를 렌더링하지 못했습니다. (0) | 2020.12.11 |
디렉토리가 PHP에서 쓰기 가능한지 어떻게 확인합니까? (0) | 2020.12.11 |