2011-12-27 8 views
8

私たちの従業員は週ごとに手数料を支払われます。ボーナスの構造のため、私は別々の2週間の給料を計算してから2つを加算する必要があります。2つの選択ステートメントからの合計結果

私は2つの別々の週を取得し、次の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を使用しています。

答えて

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' レベルでのグループ:[DBO]修正.fnCalculateCommissionForWeekOfまたは取る新しい関数を作成する方法について

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 
0

方法開始日と終了日。この方法で、過去の週、2週間、月、年などの任意の日付スパンに対して同じ機能、同じロジックを使用することができます。

関連する問題