몇 개의 값을 열로 피벗하려하지만 같은 행에 모든 값을 넣을 수는 없습니다. 피벗 쿼리를 구체적으로 작성하는 방법이 있는지 또는 내가 조인하려는 방식에 문제가있는 경우 확실하지 않습니다.피벗 결과 병합
CARRIAGE_ID PUBLISH_FLAG COUNTER_PRESCRIBED ADT2008 AWT2008 AWE2008
10041 1 P NULL NULL 36800
10041 1 P NULL 46400 NULL
10041 1 P 43000 NULL NULL
이를 : 당신은 아마 자신보다 더 잘 알고 있기 때문에, 유래, 나는
select
[CARRIAGE_ID]
,[PUBLISH_FLAG]
,[COUNTER_PRESCRIBED]
,[ADT] AS 'ADT2008'
,[AWT] AS 'AWT2008'
,[AWE] AS 'AWE2008'
from [RISSxplr].[dbo].[ADT_MAP_FACT]
pivot (max([FIGURE]) FOR COUNT_TYPE IN ([ADT],[AWT],[AWE])) AS pCountType
WHERE [COUNT_YEAR] = 2008
가 (샘플)처럼 나에게 결과를 제공합니다 ... 내 끔찍한 시도를 생략하고 그것을 설명하려고합니다 모두 같은 CARRIAGE_ID을 공유하고 내가 필요한 것은 다음과 같을 것 때문에 같은 행에있을 모든 이들을위한 것입니다 :
CARRIAGE_ID PUBLISH_FLAG COUNTER_PRESCRIBED ADT2008 AWT2008 AWE2008
10041 1 P 43000 46400 36800
을하지만 그렇게 할 수없는 것. 도와주세요! 언제나처럼 고맙습니다.
편집 : 당신이 원하는 결과를 얻기 위해 집계 함수 (MAX/SUM)를 사용하는 그래서 나는 ADT_MAP_FACT
에서CARRIAGE_ID COUNT_TYPE COUNT_YEAR FIGURE NUMBER_DAYS PUBLISH_FLAG COUNTER_PRESCRIBED
10041 ADT 2008 43000 341 1 P
10041 ADT 2009 43400 292 1 P
10041 ADT 2010 44000 314 1 P
10041 ADT 2011 43300 341 1 P
10041 ADT 2012 42700 354 1 P
10041 AWE 2008 36800 95 1 P
10041 AWE 2009 36800 81 1 P
10041 AWE 2010 37900 87 1 P
10041 AWE 2011 37000 98 1 P
10041 AWE 2012 36500 98 1 P
10041 AWT 2008 46400 192 1 P
10041 AWT 2009 46900 162 1 P
10041 AWT 2010 47100 185 1 P
10041 AWT 2011 46900 189 1 P
10041 AWT 2012 46600 198 1 P
당신의 질의는'10041, 1, P, NULL, NULL, 36800'을 출력 할 것이고, AWT_ flds를 합산 할 필요가 있습니다! – sourcecode
GROUP BY는 위에 게시 된 바이올린에서 작업하는 동안 내 작업을하지 않습니다. 필드에 집계를 필요로 함으로서 당신이 의미하는 바를 모르겠다 (여전히 SQL 비트를 조금씩 배우는 것). 그러나 나는 그것을 시도 할 수있다! 감사! –
데이터를 사용하여 업데이트되었습니다. –