2011-12-27 24 views
8

Çalışanlarımıza haftalık olarak komisyon ödenir ve bonus yapısından dolayı iki ayrı haftalık ödemeyi hesaplamak ve sonra ikisini birlikte eklemem gerekir.Sonuçların iki seçiminden elde edilen sonuçlar

İki ayrı hafta alır aşağıdaki SQL deyimi Bu bana ihtiyacım olan verileri alır ama aynı sütunları ile bir tabloya iki sonuçlarını birleştirmek istiyorum ama bazı sahip

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) 

sonuçları var birlikte eklenen sütunların (CommissionPay, PTOPay, HolidayPay, Fazla Mesai, TotalPay). Bunu yapmanın en iyi yolu nedir? SQL Server 2008 R2 kullanıyorum.

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 

cevap

12

bu

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

Mükemmel, bir çekicilik gibi çalışır! – BrianKE

+2

İyi şanslar! Umarım bugün bir şey öğrenmişsindir. 8-) –

1

'superquery' düzeyinde Sorgunuzla bir alt sorgu ve grubu Make Deneyin başlangıç ​​ve bitiş tarihi. Bu şekilde, aynı işlevi ve aynı mantığı, geçmiş hafta, 2 hafta, ay, yıl vb. Dahil olmak üzere herhangi bir tarih aralığına karşı çalıştırmak için kullanabilirsiniz.

0

[dbo] değiştirerek .fnCalculateCommissionForWeekOf veya yeni işlev oluşturma hakkında nasıl alır:

İlgili konular