데이터베이스 개발자 질문과 답변 게시판
아래 게시물에 대한 추가 질문입니다..
아래의 스크립트를 실행하면 첨부된 그림과 같이 출력이 되는데요...
첨부된 그림의 결과에서 빨간박스에 해당되는 데이터는 나오지 않게 하고 싶은데..
어떻게 해야 할지 잘 모르겠네요.. 도움이 필요합니다.
IF OBJECT_ID('tempdb..#TEST') IS NOT NULL
DROP TABLE tempdb..#TEST;
GO
CREATE TABLE #TEST
( FUNC VARCHAR(100)
, BU VARCHAR(100)
, Team VARCHAR(100)
, Name VARCHAR(100)
, [06] INT
, [07] INT
, [08] INT
, [09] INT
, [10] INT
, [11] INT
, [12] INT
, [01] INT
, [02] INT
, [03] INT
, [04] INT
, [05] INT
, DeptCode VARCHAR(100)
)
INSERT #TEST SELECT 'F1', 'BA', 'M10', 'A', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '010'
INSERT #TEST SELECT 'F1', 'BC', 'M11', 'B', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '011'
INSERT #TEST SELECT 'F1', 'BP', 'M12', 'C', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '012'
INSERT #TEST SELECT 'F1', 'BP', 'M12', 'D', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '012'
INSERT #TEST SELECT 'F2', 'BD', 'M21', 'E', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '021'
INSERT #TEST SELECT 'F2', 'BD', 'M22', 'F', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '022'
INSERT #TEST SELECT 'F2', 'BF', 'M31', 'G', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '031'
INSERT #TEST SELECT 'F2', 'BF', 'M32', 'H', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '032'
SELECT * FROM #TEST
SELECT (case when GROUPING(FUNC) = 0 then FUNC else 'T-TTL' end) AS FUNC
, (case when GROUPING(BU ) = 0 then BU else 'B-TTL' end) AS BU
, (case when GROUPING(Team) = 0 then Team else 'S-TTL' end) AS Team
, (case when GROUPING(Name) = 0 then MAX(Name) else '' end) AS Name
, (case when GROUPING(Team) = 0 then MAX(DeptCode) else '' end) AS DeptCode
, SUM([06]) AS [06]
, SUM([07]) AS [07]
, SUM([08]) AS [08]
, SUM([09]) AS [09]
, SUM([10]) AS [10]
, SUM([11]) AS [11]
, SUM([12]) AS [12]
, SUM([01]) AS [01]
, SUM([02]) AS [02]
, SUM([03]) AS [03]
, SUM([04]) AS [04]
, SUM([05]) AS [05]
FROM #TEST
GROUP BY FUNC, BU, Team, Name WITH ROLLUP
ORDER BY FUNC, BU, Team, Name
GO
HAVING GROUPING(FUNC) + GROUPING(BU) + GROUPING(Team) + GROUPING(Name) <> 1