Home All Groups Group Topic Archive Search About

Question about SUM query

Author
22 Oct 2007 4:55 PM
Cirene
I have a "transaction" table with 2 columns, TransTypeId and TransAmt.
Example:

TransTypeId        TransAmt
A                        100
A                        200
B                        100
C                        50
B                        100
A                        100

I am trying to do a SUM of all the TransTypeId A and B.  The result should
be 600.  I WANT TO GET ONLY THIS 1 VALUE BACK.

But, the result of the query is returning...
A        400
B        200

It's not summing it as a "group", but per "TransTypeId".  Any ideas why?

Here's the raw query...  (
SELECT     SUM(Transactions.TransAmt) AS Expr1, Enroll.ProgramId,
Enroll.EnrollId
FROM         Transactions INNER JOIN
                      Enroll ON Transactions.EnrollId = Enroll.EnrollId
GROUP BY Enroll.ProgramId, Enroll.EnrollId, Transactions.TransTypeId
HAVING      (Enroll.ProgramId = @ProgramId) AND (Enroll.EnrollId =
@EnrollId) AND (Transactions.TransTypeId = 1 OR
                      Transactions.TransTypeId = 2 OR
                      Transactions.TransTypeId = 3)

Thanks!

Author
22 Oct 2007 5:48 PM
Miha Markic
I think this select would do the trick:
Select SUM(TransAmt) FROM Transactions where TransTypeId IN ('A', 'B')

--
Miha Markic [MVP C#, INETA Country Leader for Slovenia]
RightHand .NET consulting & development www.rthand.com
Blog: http://cs.rthand.com/blogs/blog_with_righthand/

Show quote
"Cirene" <invalid_em***@zzz.com> wrote in message
news:Ojr9YxMFIHA.1184@TK2MSFTNGP04.phx.gbl...
>I have a "transaction" table with 2 columns, TransTypeId and TransAmt.
>Example:
>
> TransTypeId        TransAmt
> A                        100
> A                        200
> B                        100
> C                        50
> B                        100
> A                        100
>
> I am trying to do a SUM of all the TransTypeId A and B.  The result should
> be 600.  I WANT TO GET ONLY THIS 1 VALUE BACK.
>
> But, the result of the query is returning...
> A        400
> B        200
>
> It's not summing it as a "group", but per "TransTypeId".  Any ideas why?
>
> Here's the raw query...  (
> SELECT     SUM(Transactions.TransAmt) AS Expr1, Enroll.ProgramId,
> Enroll.EnrollId
> FROM         Transactions INNER JOIN
>                      Enroll ON Transactions.EnrollId = Enroll.EnrollId
> GROUP BY Enroll.ProgramId, Enroll.EnrollId, Transactions.TransTypeId
> HAVING      (Enroll.ProgramId = @ProgramId) AND (Enroll.EnrollId =
> @EnrollId) AND (Transactions.TransTypeId = 1 OR
>                      Transactions.TransTypeId = 2 OR
>                      Transactions.TransTypeId = 3)
>
> Thanks!
>
Author
22 Oct 2007 7:11 PM
Cirene
Thanks Miha...

Show quote
"Miha Markic" <miha at rthand com> wrote in message
news:OnM1HQNFIHA.5208@TK2MSFTNGP04.phx.gbl...
>I think this select would do the trick:
> Select SUM(TransAmt) FROM Transactions where TransTypeId IN ('A', 'B')
>
> --
> Miha Markic [MVP C#, INETA Country Leader for Slovenia]
> RightHand .NET consulting & development www.rthand.com
> Blog: http://cs.rthand.com/blogs/blog_with_righthand/
>
> "Cirene" <invalid_em***@zzz.com> wrote in message
> news:Ojr9YxMFIHA.1184@TK2MSFTNGP04.phx.gbl...
>>I have a "transaction" table with 2 columns, TransTypeId and TransAmt.
>>Example:
>>
>> TransTypeId        TransAmt
>> A                        100
>> A                        200
>> B                        100
>> C                        50
>> B                        100
>> A                        100
>>
>> I am trying to do a SUM of all the TransTypeId A and B.  The result
>> should be 600.  I WANT TO GET ONLY THIS 1 VALUE BACK.
>>
>> But, the result of the query is returning...
>> A        400
>> B        200
>>
>> It's not summing it as a "group", but per "TransTypeId".  Any ideas why?
>>
>> Here's the raw query...  (
>> SELECT     SUM(Transactions.TransAmt) AS Expr1, Enroll.ProgramId,
>> Enroll.EnrollId
>> FROM         Transactions INNER JOIN
>>                      Enroll ON Transactions.EnrollId = Enroll.EnrollId
>> GROUP BY Enroll.ProgramId, Enroll.EnrollId, Transactions.TransTypeId
>> HAVING      (Enroll.ProgramId = @ProgramId) AND (Enroll.EnrollId =
>> @EnrollId) AND (Transactions.TransTypeId = 1 OR
>>                      Transactions.TransTypeId = 2 OR
>>                      Transactions.TransTypeId = 3)
>>
>> Thanks!
>>
>

AddThis Social Bookmark Button