は、Employeeテーブルを考えてみて、年間最高シーケンス番号、パーSSNのための税額の合計をピックアップする必要があります:ごとの雇用
Employerid ssn year Seqnumber q1taxamt q2taxamt q3taxamt q4taxamt
1004 101 2013 1 2000 0 0 0
1004 101 2013 2 2000 100 0 0
1004 101 2013 3 2000 100 200 0
1004 101 2013 4 2000 100 200 300
1004 102 2013 1 3000 0 0 0
1004 102 2013 2 3000 200 0 0
1004 102 2013 3 3000 200 300 0
1004 102 2013 4 3000 200 300 400
1004 102 2013 5 3000 200 300 400
ここで変換規則は、私たちが尊敬と最も高いSeqnumberを選択する必要があります毎年各ssnに
従業員とその額。合計10004のため
すなわち(q1taxamt)2000 +3000 = 5000
ロジック101 SSNである4とSSN 102の最高SEQ番号は、我々はこれらの値のWRTを選択する必要があるので、5の最もSEQ番号を有していますemployeridする
例: はq1taxamtをチェックしたい:3000 = 5000
がq4taxamtをチェックする2000年:300 400 = 700
出力がなければなりません。
Employerid YEAR q1taxamt q2taxamt q3taxamt q4taxamt
10004 2013 5000 300 500 700
以下のクエリが間違った結果を生成している:
Select
Sum(E1.q1taxamt) q1taxamt,
Sum(E1.q2taxamt) q2taxamt,
Sum(E1.q3taxamt) q3taxamt,
Sum(E1.q4taxamt) q4taxamt,
E1.Employerid,
E1.YEAR
from Employee E1
join
(
select
E.Employerid,
MAX(E.seqnumber) seqnumber,
E.YEAR
from Employee E
group by E.Employerid,E.SSn,E.year
)E2
on E1.Employerid=E2.Employerid
AND E1.YEAR=E2.YEAR
and E1.seqnumber=E2.Taxseqnumber
実行に長時間かかっても、他のパフォーマンスに関するヒントはありますか –