Hia all
I am having a bit of a Friday moment with some SQL and am hoping someone can show me the light…??
I am sure its very basic – but the finer details are some what eluding me today…
I have this script equivalent…
Select
B.Description
Count(B.Description)
Sum(A.Amount)
From
Table1 A
Join Table2 B on (A.id = B.id)
Where table A has one to many records of table B.
This runs fine, but what I am seeing is an incorrect Sum amount due to this one to many association between the two tables.
i.e. if an ID from Table A has £5 in the Amount column, and the same ID exists on 4 records on Table B – my sum result is coming back at £20, I only want a distinct £5.
My initial thought was to do something like putting Distinct in front of the A.Amount (Sum(Distinct A.Amount)) within the aggregate, but this groups by the money values, and not the ID…
I hope that makes sense to someone out there?!
Many thanks in advance!!
Christopher Hill
Swyddog Dadansoddi a Chymorth SQL
SQL Support Analyst
Canolfan Mileniwm Cymru
Wales Millennium Centre
Ebost\Email Christopher.Hill@wmc.org.uk
Ffon\Tel 029 2063 6372
www.wmc.org.uk
Dy Le Di
Make it Yours this year
Cysylltwch yn Gymraeg neu'n Saesneg fel dymunwch
Contact us in English or Welsh as you prefer
Plas Bute\Bute Place
Bae Caerdydd\Cardiff Bay
CF10 5AL
P Meddyliwch am yr amgylchedd cyn printio / Please consider the environment before printing this email
Hi Christopher
You've probably solved it by now, since Friday's long gone, but i would suggest a subquery to limit what you get back in the join.
That is, something like this (assuming the description in table2 is always the same value for a given id value) :
Select q.Description, Count(*) , Sum(A.Amount)From Table1 A Join (select distinct id, description from Table2) q on A.id = q.idgroup by q.description
Ken
Many thanks for your response Ken…
I thought I had tried something like this – but upon looking into your suggestion a bit more it got me right down the correct path! So many thanks for that!
Regards
Chris
From: Tessitura Technical Forum [mailto:forums-technical@tessituranetwork.com] On Behalf Of Ken McSwain Sent: 19 July 2009 04:52 To: Christopher Hill Subject: [Tessitura Technical Forum] Re:
Select q.Description, Count(*) , Sum(A.Amount) From Table1 A Join (select distinct id, description from Table2) q on A.id = q.id group by q.description
From: Christopher Hill <bounce-christopherhill1040@tessituranetwork.com> Sent: 7/17/2009 9:58:39 AM
Mae’r ohebiaeth hon at ddefnydd y derbynnydd/derbynyddion bwriadedig yn unig. Os nad chi yw’r derbynnydd/derbynyddion bwriadedig, nodwch fod dosbarthu, copïo neu ddefnyddio’r ohebiaeth hon neu’r wybodaeth ynddi mewn unrhyw ffordd wedi ei wahardd yn gyfangwbl a gall fod yn anghyfreithlon. Os ydych wedi derbyn yr ohebiaeth hon trwy gamgymeriad a fyddech cystal â’i ddychwelyd i’r anfonwr. Yn yr achos hwn byddem yn ddiolchgar pe gallech hefyd anfon yr ohebiaeth at administrator@wmc.org.uk ac yna dileu’r e-bost a dinistrio unrhyw gopïau ohono. Cwmni cyfyngedig dan warrant, cofrestrwyd yng Nghymru a Lloegr. Rhif Cwmni 3221924. Rhif Elusen 1060458. Swyddfa gofrestredig: Plas Bute, Bae Caerdydd, Caerdydd CF10 3AL This communication is for the exclusive use of the intended recipient(s). If you are not the intended recipient(s) please note that any form of distribution, copying or use of this communication or the information in it is strictly prohibited and may be unlawful.If you have received this communication in error please return it to the sender. In this event would be grateful if you would also copy the communication to administrator@wmc.org.uk then delete the email and destroy any copies of it. A company limited by guarantee, registered in England and Wales. Company number 3221924. Charity number 1060458. Registered office: Bute Place, Cardiff Bay, Cardiff CF10 5AL
This message was sent automatically to you by www.tessituranetwork.com because you subscribed to the Tessitura Technical Forum. You may reply to this message to post to the Technical forum or visit the site to search, read and post to the forums. In the interest of keeping the forum posts from becoming cluttered, we encourage you to delete previous message text from your reply before sending. Thank you!