2013-02-18 8 views
0

I은 ​​다음과 같습니다 (간체 형식) 형식으로 SQL Server 2008의 테이블이 :SQL - 피벗/언 피벗?

Date Miles Cost

내가

  Previous Week  Current Week Variance 
Miles   

Cost

같은 결과가 어떻게 이것을 달성 할 수 싶어? 피벗/피벗 해제가 필요하거나이를 달성하는 가장 쉽고 효과적인 방법은 무엇입니까? 감사.

+0

을 찾고에 당신이 아주 가까이 가야 . – Kermit

+0

그럼 어떻게 할 수 있습니까? 여러 개의 유니온과 조인이없는 간단한 SQL을 선호합니다. – devSuper

답변

0
SELECT 'Miles' AS Type, SUM(CASE WHEN date = lastweek THEN miles ELSE 0 END) as lastweek 
, SUM(CASE WHEN date = thisweek THEN miles ELSE 0 END) as thisweek 
SUM(CASE WHEN date = lastweek THEN miles ELSE 0 END) - SUM(CASE WHEN date = thisweek THEN miles ELSE 0 END) as variance 
FROM yourtable 
UNION 
SELECT 'Cost' AS Type, SUM(CASE WHEN date = lastweek THEN cost ELSE 0 END) as lastweek 
, SUM(CASE WHEN date = thisweek THEN cost ELSE 0 END) as thisweek 
SUM(CASE WHEN date = lastweek THEN cost ELSE 0 END) - SUM(CASE WHEN date = thisweek THEN cost ELSE 0 END) as variance 
FROM yourtable 

이 100 % 정확하지 않습니다,하지만 구문이 정확해야하고 모든이에 대한 피벗이 필요한 것처럼 보이지 않는 당신이

+0

단순 해 보였습니다. 조인스 (Joins)로 시작했고 추악한 코드로 끝날 것이라고 생각했습니다. 나는 그것이 작동하는 것을 볼 수 있고, 그것에 대해 작동 할 것이다. 고마워요 :) – devSuper

+0

'UNION ALL'과'UNION'을 사용하는 것이 더 빠르기 때문에 나는 여전히 추천 할 것입니다. – Kermit