[SQL] 어떻게 SQL Server를 단일 테이블에 가입하여 요약을 만들 수 있습니까?
SQL어떻게 SQL Server를 단일 테이블에 가입하여 요약을 만들 수 있습니까?
나는 업데이트 데이터를 반복 일부 필드가있는 테이블이있다. 나는 그것을 요약이 데이터를 롤업하고 싶다. 어떻게 SQL Server에 대해이 작업을 수행합니까? I 아래 출력 구조의 일례를 갖는다. 좀 다른 조인을 시도했다하지만 난 이해하지 않는 데이터와 약간의 오차가 반복 보았다.
테이블 구조
데이터
f1, 3, 0
f1, 2, 1
f1, 3, 0
f2, 1, 1
f2, 1, 1
f2, 2, 1
....
산출
File | Count of status == 1 | Count of status == 2
f1 | 59 | 43
f2 | 28 | 99
f3 | 23 | 16
해결법
-
==============================
1.롤업를 사용하여 데이터를 요약 :
롤업를 사용하여 데이터를 요약 :
http://msdn.microsoft.com/en-us/library/ms189305(v=sql.90).aspx
당신은 무엇 SQL 서버의 버전을 사용하고 있습니까?
당신이 롤업 사용하려는 해달라고하면이 도움이 될 것입니다 :
SELECT FileName, SUM(CASE WHEN Status = 1 THEN 1 ELSE 0 END) AS CountOf1, SUM(CASE WHEN Status = 2 THEN 1 ELSE 0 END) AS CountOf2, SUM(CASE WHEN Status = 3 THEN 1 ELSE 0 END) AS CountOf3 FROM MyTable GROUP BY FileName ORDER BY FileName
-
==============================
2.위, 여기에 SQL Server 2005 또는를 사용하는 가정하면 코드입니다 :
위, 여기에 SQL Server 2005 또는를 사용하는 가정하면 코드입니다 :
DECLARE @cols VARCHAR(1000) DECLARE @sqlquery VARCHAR(2000) SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName(cast([status] as varchar)) FROM LogTable FOR XML PATH('') ), 1, 1, '') SET @sqlquery = 'SELECT * FROM (SELECT UserIndex, [status] FROM LogTable ) base PIVOT (Count(status) FOR [status] IN (' + @cols + ')) AS finalpivot' EXECUTE ( @sqlquery )
이 상관없이 당신이 얼마나 많은 다른 상태 작동하지 않습니다. 동적으로 PIVOT과 쿼리를 어셈블합니다.
최신 정보
@JonH가 지적한 바와 같이, 가능한 주입 공격을 만든 내가 게시 된 코드의 취약점이 있었다. 이것은 지금 열 이름을 형성 할 때 QUOTENAME를 사용하여 고정된다.
다른 예 :
-
==============================
3.
SELECT file, SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) AS [Count of status == 1] , SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) AS [Count of status == 2] FROM Table GROUP BY file ORDER BY file
from https://stackoverflow.com/questions/6849678/how-do-i-build-a-summary-by-joining-to-a-single-table-with-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 외래 키 제약 조건 : 때 ON UPDATE 및 DELETE ON을 사용하는 (0) | 2020.06.19 |
---|---|
[SQL] 날짜를 구문 분석 후 오라클을 선택 문에서 수를 돌려줍니다 (0) | 2020.06.19 |
[SQL] PostgreSQL를 9.3 : 동적 피벗 테이블 (0) | 2020.06.19 |
[SQL] SQL Server는 빈 공간을 무시하고 같이 사용하여 검색 (0) | 2020.06.19 |
[SQL] 어떻게 서로 다른 값을 가진 테이블을 조인을 사용 값을 얻으려면? (0) | 2020.06.19 |