2014-05-19 2 views
0

PIVOT을 사용하여 테이블을 조 변경하려고했습니다. 이 순간에 내 코드입니다 :행을 그룹화하는 SQL 피벗 함수

select distinct to_date,[syst1],[syst2],[syst3] 
from MyTable 
pivot 
(
    count(systems) 
    for systems 
    in ([syst1],[syst2],[syst3]) 

) 
as PivotTable 
order by to_date 

는이 내가 얻을 결과 : 33 & 34 함께 enter image description here

내가 원하는 것은 그룹 행에, 그리고 35 & 함께 36, 37 & 38 함께 는 그래서 그들은 다음과 같이 있음 :

enter image description here

답변

0

피벗이 원하는대로 행동해야합니다. . . to_date에는 시간 구성 요소가 없습니다. 이 문제가 해결 되었습니까?

select to_date, [syst1], [syst2], [syst3] 
from (select cast(to_date as date) as to_date, systems 
     from MyTable 
    ) mt 
pivot (count(systems) 
     for systems in ([syst1], [syst2], [syst3]) 
    ) as PivotTable 
order by to_date; 
+0

고정되었지만 CAST가 아니기 때문에 시간 구성 요소가 없지만 하위 쿼리로 인해 문제가 해결되었습니다. 왜 그것이 효과가 있었는지 모르겠습니다. 감사합니다 – user2343837

+0

@ user2343837. . . SQL Server는 집계되지 않은 모든 열을 사용하여 피벗 후에 각 행을 정의합니다. 하위 쿼리는 원하는 하위 집합 만 선택합니다. –