[SQL] SQL 서버에서 동적 SQL 피벗
SQLSQL 서버에서 동적 SQL 피벗
이제 SQL 서버 2008이 쿼리를 실행하지만, 곧 SQL 리포팅 서비스에서 보고서를 만드는 이동 계획 :
SELECT * from ( SELECT Amount, Year, column1, column2,column3 from BUYSCTE ) BUY
피벗이 인없이 쿼리 위의 실행 내 테이블 결과
Column1 | Column2 | Column3| FYYear| Amount|
1 cat dog 2011 50
1 cat dog 2012 75
1 cat dog 2013 65
2 fish snake 2011 23
2 fish snake 2012 39
2 fish snake 2013 59
..
..
.. 2016
그래서 기본적으로 나는 이런 식으로 끝내고 결과를 원하는 :
Column1 | Column2 | Column3| 2011| 2012 | 2013
1 cat dog 50 75 65
2 fish snake 23 39 59
쿼리 그래서 내가,이 내가 먼저 테이블 변수를 생성 일어날 수 있도록 함께 와서 그것을 동적 변수를 만들어 다음과 같이 피벗했다
declare @Year nvarchar(Max)
set @Year = STUFF(
(SELECT ', ' + quotename(FYYear)
from BUYSCTE Group By FYYear order by
FYYear For XML PATH(''))
, 1, 2, '');
상기 채우는 @ 년 값 [2012] [2011], [2013], [2014], [2015], [2016]
본인은 위의 SELECT @ 년에 변경을 선택하기 때문에 값이 올바르게 설정되어 있는지 만 확인하는 것을 알고
내가 거기 변경에서 위의 테이블 변수 후 선택
SELECT * from ( SELECT Amount, FYYear, column1, column2,column3 from BUYSCTE ) BUY
PIVOT( SUM(Amount) FOR FYYear in ([@Year]) ) pvt
하지만 내 결과는이 끝나게
Column1 | Column2 | Column3| @Year|
1 cat dog null
2 fish snake null
내가 무엇을 잘못하고 있지? 내가 나 자신을 볼 수 없습니다 놓친 거지 뭔가 작은 것 같다. I는 SUM에서 집계 기능을 변경하는 경우에도 그것이 NULL 대신 @ 년 열 값에 0을 부여하는 COUNT
해결법
-
==============================
1.당신은 가까이 있지만,이 작업을 위해 당신은 동적 SQL을 사용하여 PIVOT을 구성하고 다음을 실행해야합니다. 당신이 당신의 변수 @ 년을 채우고 난 후에, 당신은 같은 것을 할 필요가 :
당신은 가까이 있지만,이 작업을 위해 당신은 동적 SQL을 사용하여 PIVOT을 구성하고 다음을 실행해야합니다. 당신이 당신의 변수 @ 년을 채우고 난 후에, 당신은 같은 것을 할 필요가 :
DECLARE @Query VARCHAR(MAX) SET @Query = ' SELECT * from ( SELECT Amount, FYYear, column1, column2,column3 from BUYSCTE ) BUY PIVOT( SUM(Amount) FOR FYYear in ('+ @Year + ') ) pvt' EXEC(@Query)
이 일을하기 전에하지만, 당신은이 링크를 살펴 보셔야합니다.
from https://stackoverflow.com/questions/8327261/dynamic-sql-pivot-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 테이블에 레코드를 삽입 할 때 작은 따옴표로 문자열 필드는 오류의 원인이 (0) | 2020.05.29 |
---|---|
[SQL] 널 (null) 값 vb.net에 대한 바운드 데이터 테이블을 확인 (0) | 2020.05.29 |
[SQL] 여러 행을 기준으로 테이블에서 MYSQL 선택 (0) | 2020.05.29 |
[SQL] MS 액세스 제한 (0) | 2020.05.29 |
[SQL] 하위 쿼리 및 반환 절에 PLSQL 삽입 (0) | 2020.05.29 |