PIVOT을 동적으로하려면 저장 프로 시저를 작성해야합니다.
CREATE PROCEDURE dynPivot
(
@select varchar(255),
@pivotColumns varchar(255),
@summaries varchar(100)
) AS
DECLARE @pivot varchar(max), @sql varchar(max), @selectForPivotColumns varchar(max)
SELECT @selectForPivotColumns = REPLACE(@select, 'SELECT', 'SELECT ' + @pivotColumns + ' AS rowValuesToColumns, ')
CREATE TABLE #pivot_columns (pivot_column varchar(100))
SELECT @sql = 'SELECT DISTINCT rowValuesToColumns FROM (' + @selectForPivotColumns + ') as t'
INSERT INTO #pivot_columns
EXEC(@sql)
SELECT @pivot = COALESCE(@pivot + ', ', '') + '[' + pivot_column + ']' FROM #pivot_columns
SELECT @sql =
'
SELECT * FROM
(
' + @select + '
) AS t
PIVOT
(
' + @summaries + ' FOR ' + @pivotColumns + ' IN (' + @pivot + ')
) AS p
'
EXEC(@sql)
그럼 당신은 이런 식으로 호출 할 수 있습니다 : 당신은 할 수 없습니다
EXEC dynPivot 'SELECT * FROM tbl_DeductionHead', 'DeductionHead', 'SUM(DeductionPerAmount)';
합니다. 값 목록은 정적입니다 – teran
@ Gaurav 의견이 있으십니까? 내 대답이 도움이 되었습니까? – fancyPants
@tombom ya 당신의 대답은 훌륭하고 잘 작동합니다 ... 고마워 ... –