2011-12-27 2 views
8

직원은 매주 지급되며 보너스 구조로 인해 2 주간의 별도 수령액을 계산 한 다음 두 항목을 합산해야합니다.두 개의 select 문으로 결과 합산

나는 두 개의 주를 얻을 다음 SQL 문이 나에게 원하는 데이터를 얻을 수 있지만이 같은 열이 하나 개의 테이블에이 개 결과를 결합하고 싶지만 어떤을 가진

SELECT PerceptionistID, SSNLastFour, CommissionPay, 
     PTOPay, HolidayPay, Overtime, TotalPay 
    FROM [dbo].fnCalculateCommissionForWeekOf(@MondayOfCurrentWeek) 

    UNION 

    -- Need to get the following week's data and sum the two together 
    SELECT PerceptionistID, SSNLastFour, CommissionPay, 
     PTOPay, HolidayPay, Overtime, TotalPay 
    FROM [dbo].fnCalculateCommissionForWeekOf(@MondayOfFollowingWeek) 

결과 한 (CommissionPay, PTOPay, HolidayPay, Overtime, TotalPay)를 추가했습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? SQL Server 2008 R2를 사용하고 있습니다.

SELECT PerceptionistID, SSNLastFour, sum(CommissionPay), ... 
FROM 
(
SELECT PerceptionistID, SSNLastFour, CommissionPay, 
    PTOPay, HolidayPay, Overtime, TotalPay 
FROM [dbo].fnCalculateCommissionForWeekOf(@MondayOfCurrentWeek) 

UNION 

-- Need to get the following week's data and sum the two together 
SELECT PerceptionistID, SSNLastFour, CommissionPay, 
    PTOPay, HolidayPay, Overtime, TotalPay 
FROM [dbo].fnCalculateCommissionForWeekOf(@MondayOfFollowingWeek) 
) AS X 
GROUP BY PerceptionistID, SSNLastFour 

답변

12

SELECT PerceptionistID, SSNLastFour, SUM(CommissionPay) CommissionPay, 
     SUM(PTOPay) PTOPay, SUM(HolidayPay) HolidayPay, SUM(Overtime) Overtime, SUM(TotalPay) TotalPay 
FROM 
(
    SELECT PerceptionistID, SSNLastFour, CommissionPay, 
     PTOPay, HolidayPay, Overtime, TotalPay 
    FROM [dbo].fnCalculateCommissionForWeekOf(@MondayOfCurrentWeek) 

    UNION ALL 

    -- Need to get the following week's data and sum the two together 
    SELECT PerceptionistID, SSNLastFour, CommissionPay, 
     PTOPay, HolidayPay, Overtime, TotalPay 
    FROM [dbo].fnCalculateCommissionForWeekOf(@MondayOfFollowingWeek) 
) t 
GROUP BY PerceptionistID, SSNLastFour 
+1

우수하며 매력적입니다. – BrianKE

+2

행운을 빈다! 오늘 무언가를 배웠 으면 좋겠어요. 8-) –

1

은 'superquery'수준에서 쿼리 하위 쿼리 및 그룹을 확인하십시오 시작 및 종료 날짜. 이 방법을 사용하면 지난 주, 2 주, 1 개월, 1 년 등의 모든 기간에 대해 동일한 기능과 동일한 논리를 사용할 수 있습니다.

0

가 [DBO] 수정 .fnCalculateCommissionForWeekOf하거나 새로운 기능을 만드는 방법에 대해 걸리는 :

관련 문제