0
다음 데이터가 있습니다. 결과가 요구되는 이와 같은 헤더 paymonth 열에SQL Server에서 여러 열의 피벗
state f_name product paymonth income expense savings
state_1 f1 product_1 apr-2013 5000 1500 3500
state_1 f1 procudt_1 may-2013 4500 3000 1500
state_1 f1 procudt_2 may-2013 4500 3000 1500
state_2 f2 product_2 apr-2013 15000 11500 35000
state_2 f2 product_3 aug-2013 1500 500 1000
피벗 ...
state f_name product apr-2013_income apr-2013_expense apr-2013_savings may-2013_income may-2013_expense.....and so on for distinct paymonth
state_1 f1 product_1 5000 1500 3500 4500 3000....and so on....
state_1 f1 product_2 0 0 0 4500 3000....
이제 진짜 문제는 상태, f_name이며, 제품은 열으로 남아 있어야하고 동적이다.
또한 paymonth 및 기타 데이터는 동적입니다.
피벗을 사용해야합니다. 나는 몇 가지 예를 봤지만 내가 원하는 것을 얻지 못했습니다.
이 내가 뭘하려 ...
DECLARE @COLS AS NVARCHAR(MAX) = ''
SELECT @COLS = COALESCE(@COLS + ', ', '') + QUOTENAME(PAYMONTH)
FROM #DATA
GROUP BY PAYMONTH, PM ORDER BY PM --pm is last date of paymonth for ordering data in asc/desc
declare @QUERY AS NVARCHAR(MAX) = ''
SET @QUERY = 'SELECT state, product, f_name, ' + @COLS + ' FROM
(
SELECT state, product, f_name, income, paymonth--, expense, saving,
FROM #DATA
) X
PIVOT
(
SUM(income)
FOR paymonth IN (' + @COLS + ')
) P
ORDER BY state, product, f_name'
execute(@query)
이 소득에 대한 paymonth에 피벗에 대한 올바른 결과를 줄 것이다하지만 난 3, 소득, 비용과 비용 절감을 위해 그것을 할 캔트.
시도해도 교차 적용 및 unpivot이 시도되었지만 실패했습니다.
도움이 필요하십니까? 감사합니다. .
잘 작동하지 않을 때 필자는 피벗을하려 할 때 비용과 paytype이 누락되었습니다. 감사...!! – LeO