[SQL] SQL의 GROUP BY 절에 열을 쉼표로 구분
SQLSQL의 GROUP BY 절에 열을 쉼표로 구분
나는 다음과 같은 쿼리를 가지고 :
SELECT
Account,
Unit,
SUM(state_fee),
Code
FROM tblMta
WHERE MTA.Id = '123'
GROUP BY Account,Unit
코드가 GROUP BY 절에 있지 않기 때문에 이것은 물론 예외가 발생합니다. 각 state_fee는 코드가 있습니다. 어떻게 쉼표로 구분 된 목록으로 (단위 당 여러 state_fee입니다 state_fee 당 1 개 코드) 1 개 레코드에 표시하려면이 코드를받을 수 있나요? 여기에 다른 솔루션에 보았다하지만 난에 의해 그룹과 일이 하나를 찾을 수 없습니다.
해결법
-
==============================
1.당신은 XML의 PATH 구조에 사용할 :
당신은 XML의 PATH 구조에 사용할 :
SELECT ACCOUNT, unit, SUM(state_fee), Stuff((SELECT ', ' + code FROM tblmta t2 WHERE t2.ACCOUNT = t1.ACCOUNT AND t2.unit = t1.unit AND t2.id = '123' FOR XML PATH('')), 1, 2, '') [Codes] FROM tblmta t1 WHERE t1.id = '123' GROUP BY ACCOUNT, unit
여기에 다른 예를 참조하십시오 :
-
==============================
2.가 더 연결하는 집계 함수 내장,하지만이 문서는 사용자 정의 CONCATENATE 집계 함수 등 여러 가지 대안 솔루션을 설명한다 :
가 더 연결하는 집계 함수 내장,하지만이 문서는 사용자 정의 CONCATENATE 집계 함수 등 여러 가지 대안 솔루션을 설명한다 :
https://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
-
==============================
3.이렇게하면 테이블, 인덱스 이름, 인덱스 유형, 인덱스 열 및 포함 된 열을 표시합니다 :
이렇게하면 테이블, 인덱스 이름, 인덱스 유형, 인덱스 열 및 포함 된 열을 표시합니다 :
with [indexes] (table_name, index_name, column_name, index_id, key_ordinal, object_id, type_desc) as( SELECT distinct T.[name] AS [table_name], I.[name] AS [index_name], AC.[name] AS [column_name], I.[index_id], IC.[key_ordinal], T.[object_id], i.type_desc FROM sys.[tables] AS T INNER JOIN sys.[indexes] I ON T.[object_id] = I.[object_id] INNER JOIN sys.[index_columns] IC ON I.[object_id] = IC.[object_id] and IC.index_id=I.index_id LEFT OUTER JOIN sys.[all_columns] AC ON T.[object_id] = AC.[object_id] AND IC.[column_id] = AC.[column_id] WHERE T.[is_ms_shipped] = 0 AND I.[type_desc] <> 'HEAP' ) select distinct db_name() as dbname, type_desc, table_name, index_name, column_name, STUFF(( select ', ' + column_name from [indexes] t2 where t1.table_name=t2.table_name and t1.[index_name]=t2.[index_name] and t2.[key_ordinal] = 0 for xml path('')), 1, 2, '') inc_cols from [indexes] t1 where t1.[key_ordinal] = 1 GROUP BY table_name, index_name, type_desc, column_name
from https://stackoverflow.com/questions/7448734/sql-comma-separated-row-with-group-by-clause by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 결과를 사용할 수까지 여러 건의 SELECT를 시도하는 방법? (0) | 2020.04.22 |
---|---|
[SQL] PostgreSQL의 멀티 INSERT는 ... 여러 열로의 반품 (0) | 2020.04.22 |
[SQL] 자기 무엇을 위해 가입한다? (영어로) (0) | 2020.04.22 |
[SQL] 삽입 속으로 ... 병합 ... 선택 (SQL 서버) (0) | 2020.04.22 |
[SQL] 내가 필요로 할 종류의 무엇에 합류? (0) | 2020.04.22 |