Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
Bunks
Starting Member
10 Posts |
Posted - 2009-11-24 : 17:02:58
|
Hi thereI am running a script that returns pension payments for members at a given date (see script and results below). With regard to the last column ("TotalPaid"), is there a script I can write to just pull out anamolies in this field e.g. is $583.33 each month then $401.52 in the last column? I would just want to see the $401.52.SELECTq1.id, q1.MemberReference, q1.Surname, q1.Initials, q1.Status, q1.SchemeCode, q1.NINO, q1.DOB,qsit.EffectiveDate,qsit.TotalPaidfrom query001suba q1join (Select Id, EffectiveDate, sum(TransAmount) as TotalPaidfrom querysubInvestmentTransaction where TransType = 'Reg Pension Pay'group by id, EffectiveDate) qsit on qsit.id = q1.id order by q1.Id, qsit.EffectiveDate RESULTS:AP00xxxxx AP00xxxxx Banks K ACTIVE xxxxxxxx NULL xxxx-01-12 00:00:00.000 2007-07-30 00:00:00.000 583.33AP00xxxxx AP00xxxxx Banks K ACTIVE xxxxxxxx NULL xxxx-01-12 00:00:00.000 2007-08-28 00:00:00.000 583.33AP00xxxxx AP00xxxxx Banks K ACTIVE xxxxxxxx NULL xxxx-01-12 00:00:00.000 2007-09-28 00:00:00.000 583.33AP00xxxxx AP00xxxxx Banks K ACTIVE xxxxxxxx NULL xxxx-01-12 00:00:00.000 2007-10-29 00:00:00.000 583.33AP00xxxxx AP00xxxxx Banks K ACTIVE xxxxxxxx NULL xxxx-01-12 00:00:00.000 2007-11-28 00:00:00.000 583.33AP00xxxxx AP00xxxxx Banks K ACTIVE xxxxxxxx NULL xxxx-01-12 00:00:00.000 2009-08-31 08:52:04.000 401.52Thanks! Luke |
|
AndrewMurphy
Master Smack Fu Yak Hacker
2916 Posts |
Posted - 2009-11-25 : 03:46:29
|
try a variation of...select b.* from mytable ainner join mytable b on a.id = b.id and b.date = a.date + 1where b.oddvalue <> a.oddvalue |
|
|
Bunks
Starting Member
10 Posts |
Posted - 2009-11-25 : 22:59:10
|
Thanks Andrew - the only issue is that 583.33 won't always be the consistenmt amount (may be 583.32 or 583.34). Also, I have about 1,500 other members with different amounts there too. |
|
|
AndrewMurphy
Master Smack Fu Yak Hacker
2916 Posts |
Posted - 2009-11-26 : 06:28:01
|
You hadn't defined "anomoly" so I put in one version. Below is another. Once you define anomoly to cover all cases you are interested in, then code can be created to work with that set.select b.* from mytable ainner join mytable b on a.id = b.id and b.date = a.date + 1where b.oddvalue <> a.oddvalue +- tolerancevalueor produce an average/median value for each employee in mytable, and see if the last one (using max date) is different.or find the last and 2nd last records (going by max-date) per employee and comparing the amounts.maybe alter the underlying database, to report differences as they occur, via triggers rather than try to infer/workout the differences by re-examining the data after the fact. |
|
|
|
|
|
|
|