Solved

SQL - Sum of Cash based on Customer ID

Posted on 2013-10-23
4
187 Views
Last Modified: 2013-10-31
To my dearest experts,

I've searched the KB, but can't locate a basic version of what I'm looking for.  

I have a Transaction table (ActivityHist) that show's bank activity.  What I need is (hopefully) a rather simple solution.  I want to see a list of Transactions (TranNo) on a specific Date (BookDate) broken down by Customer (CustID) with a sum of activity (BaseAmt) of 10000.01 or higher.  

All data fields are in the same table, no joins and such required.

Any and all help would be greatly appreciated.

-Nick
0
Comment
Question by:NCollinsBBP
  • 2
4 Comments
 
LVL 65

Accepted Solution

by:
Jim Horn earned 500 total points
ID: 39594036
<air code>  Let's start with this..
Declare @dt date = '2013-10-01'

SELECT CustID, TranNo, Sum(BaseAmt) as BaseAmtSum
FROM ActivityHist
GROUP BY CustID, TranNo
HAVING Sum(BaseAmt) > 10000

Open in new window

Q:  Does the transactions make up the sum, where you wish to apply the criteria of 'greater than ten grand'?

btw I wrote an article on SQL Server GROUP BY Solutions that would be a good read.
0
 
LVL 69

Expert Comment

by:Scott Pletcher
ID: 39594582
You will need a JOIN, since you have to determine the total while also listing the details.

Below is as close as I get with the info so far.  I used ABS(BaseAmt) in the SUM() so that credits/debits would not cancel each other out, as either/both are activity on the account.  If that's not correct, naturally remove the ABS() :-) .


DECLARE @BookDate date -- chg data type to to exactly match the data type on the table
DECLARE @trans_total decimal(9, 2) -- chg data type to to exactly match the data type on the table

SET @BookDate = '20131022'
SET @trans_total = 10000.01

SELECT ah.*
FROM dbo.ActivityHist ah
INNER JOIN (
    -- check for any customer that meets/exceeds the desired total of value of all trans
    SELECT CustID
    FROM dbo.ActivityHist
    WHERE
        BookDate = @BookDate
    GROUP BY CustID
    HAVING SUM(ABS(BaseAmt)) >= @trans_total
) AS ah_total ON
    ah_total.CustID = ah.CustID
WHERE
    ah.BookDate = @BookDate
ORDER BY
    ah.CustID, ah.TranNo
0
 

Author Closing Comment

by:NCollinsBBP
ID: 39614183
This was the first solution provided and it worked perfectly. Thank you!

(Sorry for the late reply... had some massive hardware / server issues that bled into multiple days... this became a low priority).  

-Nick
0
 
LVL 65

Expert Comment

by:Jim Horn
ID: 39614218
Thanks for the grade.  Good luck with your project.  -Jim
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Having an SQL database can be a big investment for a small company. Hardware, setup and of course, the price of software all add up to a big bill that some companies may not be able to absorb.  Luckily, there is a free version SQL Express, but does …
Introduction In my previous article (http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SSIS/A_9150-Loading-XML-Using-SSIS.html) I showed you how the XML Source component can be used to load XML files into a SQL Server database, us…
Using examples as well as descriptions, and references to Books Online, show the documentation available for date manipulation functions and by using a select few of these functions, show how date based data can be manipulated with these functions.
Viewers will learn how the fundamental information of how to create a table.

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question