2011-04-26 3 views
2

I는 다음과 같습니다 뷰 테이블이 있습니다요약보기를 만드는 데 도움이되는 (임시?) 저장 프로 시저를 만드는 방법은 무엇입니까?

enter image description here

을 그리고 각 통화에 대한 상태로 요약 할 수있는 뷰 작성하기 시작 :

WITH C AS (SELECT * FROM CampaignsPublisherReportSummary) 
SELECT 
    'Total' T, 
    SUM(CASE WHEN PayCurrency='USD' THEN Total END) USD, 
    SUM(CASE WHEN PayCurrency='EUR' THEN Total END) EUR, 
    SUM(CASE WHEN PayCurrency='GBP' THEN Total END) GBP, 
    SUM(CASE WHEN PayCurrency='AUD' THEN Total END) AUD 
FROM C 
UNION 
SELECT 
    'ToBePaid' T, 
    SUM(CASE WHEN PayCurrency='USD' THEN ToBePaid END) USD, 
    SUM(CASE WHEN PayCurrency='EUR' THEN ToBePaid END) EUR, 
    SUM(CASE WHEN PayCurrency='GBP' THEN ToBePaid END) GBP, 
    SUM(CASE WHEN PayCurrency='AUD' THEN ToBePaid END) AUD 
FROM C 
GO 

enter image description here

내가 끝낼 수를 다른 상태 (Unverified, Verified, ... 등)마다 복사/붙여 넣기를 통해 원하는 것을 얻지 만, 저의 프로그래머는 어떤 종류의 기능을 원합니다. 상태 이름을 가져 와서 쿼리의 템플릿 화 된 버전을 실행합니다 ...

질문 : 이것을 할 수 있습니까? 아니면 내가 누락 된 정보를 깰 수있는 또 다른 좋은 방법이 있습니까?

업데이트 : 내 목표는 다음과 같이하는 것입니다 :

SELECT * FROM #mytempfunc('Total') 
UNION SELECT * FROM #mytempfunc('ToBePaid') 
UNION ... 
+0

내가 아주 확실하지 않다 네가하려는 일에. 통화 열을 동적으로 생성하려고합니까? 그렇다면 [current_table]에서 고유 paycurrency를 선택하고 커서/루프를 수행하여 전체/금액을 합산하여 쿼리를 동적으로 작성할 수 있습니다. – mservidio

+0

피드백을 주셔서 감사합니다. 어쩌면 제가 복잡 할 때가 있습니다. 어쨌든, 나는 질문을 업데이트하고 여기에 목표로 "계획"을 넣었습니다 ... –

+2

이 쿼리의 결과가 SSRS 또는 이와 유사한 보고서를 만드는 것이라면보고 도구가 그룹화 및 합계를 처리하도록합니다 . – Tony

답변

2

난 당신이 요구하는지에 완전히 명확하지 않다가, 문자열 값을 기준으로 필드를 선택하려면 동적 SQL이 필요합니다. 메트릭의 목록은 (그리고 뷰에서 오는이어야 함) 정적 경우, 당신은 UNPIVOT으로, 적어도 좀 더 가까이 당신이 필요로하는 것을 얻을, 또는 수

SELECT PayCurrency, Metric, Amount 
FROM CampaignsPublisherReportSummary 
UNPIVOT (Amount FOR Metric IN (Paid, ToBePaid, Total)) AS X 
+0

젠체하는 사람, 그것은 exacltly 오른쪽이다 - 고맙다! –

+1

도와 드리겠습니다! 위의 @Tony는 가능한 경우보고 레이어에 피벗 및 서식을 남겨 두는 것이 좋습니다. 그래도 데이터베이스 측에서 처리하는 방법을 알고있는 것이 좋습니다. –

관련 문제