Solved

sql select stmt formula not working

Posted on 2008-10-04
14
239 Views
Last Modified: 2011-10-19
I am trying to get an avearge balance with in my sql select stmt but not having any luck, it works in Excel but when i apply same logic in sql it does not, it gives me wrong average balance....

select stmt
case when l.apr = 0 then 0 else abs(l.draccr/(l.apr/365*(365/12))) end as AAVGBALA,

here is an excel formula, which works
=+B4/(B3/365*(365/12))

B4 = l.draccr
B3 = l.apr

any ideas please
0
Comment
Question by:fahVB
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 7
  • 5
  • 2
14 Comments
 
LVL 60

Expert Comment

by:Kevin Cross
ID: 22641745
Remember SQL defaults to integer division when dealing with int values, so if you depend on any of the equation to evaluate to a decimal it is probably not producing the results you want as it is rounding to integer result.

Not the abs() is not part of Excel formula.  The + is not a absolute value, but I will leave in case you do want that.

Try this:
case when l.apr = 0 then 0 
else abs((l.draccr * 1.0)/((l.apr * 1.0)/365.0 * (365.0/12))) 
end as AAVGBALA

Open in new window

0
 

Author Comment

by:fahVB
ID: 22641762
Same results,

in Excel i m getting 4113.00
in sql 18.39
0
 
LVL 60

Expert Comment

by:Kevin Cross
ID: 22641805
What are the numbers you are dealing with.  Check order of operations as that is a huge swing in results.
0
Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

 

Author Comment

by:fahVB
ID: 22641834
can you please be more specific? which numbers and order of operation
0
 
LVL 60

Expert Comment

by:Kevin Cross
ID: 22641852
What are the values of ?
B4 = l.draccr = ??
B3 = l.apr = ??

If you were doing the math manually, what would you do:
e.g. l.apr/365 then muliply result by 365/12 then divide l.draccr by that result

How do you know that the Excel value is accurate basically -- how would you double check value?

Please provide that numbers you plug into those two columns/fields in Excel and I will take a look.
0
 
LVL 42

Assisted Solution

by:dqmq
dqmq earned 40 total points
ID: 22641890
Are you sure this is correctly copied from excel?

=+B4/(B3/365*(365/12))

The reason I ask, is that it doesn't make a whole lot of sense.
First, it's equivalent to =+B4/(B3/12)

Second, the expression after the first division sign appears to be like a avg monthly percentage rate.  Doesn't seem you yeild anything meaningful as a denominator:  i.e. what is x% per month per B4?


0
 

Author Comment

by:fahVB
ID: 22641937
in this instance i am just testing on one member

B4 = l.draccr = 23.65
B3 = l.apr = 6.90 %

dqmq, i have attached the excel sheet with the formula, please see
Copy-of-Ave-balance-formula.xls
0
 
LVL 60

Expert Comment

by:Kevin Cross
ID: 22642032
Ok, so you are just doing B4/(B3/12)

The SQL equivalent is the following:

l.draccr = 23.65
l.apr = 0.069

SELECT CASE l.apr WHEN 0 THEN 0 ELSE l.draccr/(l.apr/12) END AS AAVGBALA
0
 
LVL 42

Expert Comment

by:dqmq
ID: 22642039
Try this:

case when l.apr = 0 then 0 else
abs(l.draccr/(l.apr/1200)) end as AAVGBALA,




0
 
LVL 60

Expert Comment

by:Kevin Cross
ID: 22642047
Make sure those fields are setup as an appropriate data type like MONEY.
DECLARE @draccr MONEY, @apr MONEY
 
SET @draccr = 23.65
SET @apr = 0.069
 
SELECT CASE @apr WHEN 0 THEN 0 ELSE @draccr/(@apr/12) END AS AAVGBALA

Open in new window

0
 
LVL 60

Expert Comment

by:Kevin Cross
ID: 22642052
DGMG's suggestion will work if you have your data stored as 6.9 instead of 0.069, but still not sure how you were getting 18.39 before as having 6.9 instead just lowers the number to 41.13 instead of 4,113.

Anyway, hopefully this is helping.
0
 

Author Comment

by:fahVB
ID: 22642072
not working
this one gives me same results 18.39
SELECT CASE l.apr WHEN 0 THEN 0 ELSE l.draccr/(l.apr/12) END AS AAVGBALA


case when l.apr = 0 then 0 else
abs(l.draccr/(l.apr/1200)) end as AAVGBALA,

result: 1855.26


when i run following indpendently, i get 4,113
DECLARE @draccr MONEY, @apr MONEY
 
SET @draccr = 23.65
SET @apr = 0.069
SELECT CASE @apr WHEN 0 THEN 0 ELSE @draccr/(@apr/12) END AS AAVGBALA


 


0
 
LVL 60

Accepted Solution

by:
Kevin Cross earned 460 total points
ID: 22642100
That means your data in the SQL tables are not coming out correctly OR at least are not coming back with same values of 23.65 and 0.069.  

Do this to see:

SELECT CASE l.apr WHEN 0 THEN 0 ELSE l.draccr/(l.apr/12) END AS AAVGBALA, l.draccr, l.apr
0
 

Author Closing Comment

by:fahVB
ID: 31503068
darn me, you guys are right...data was wrong....sorry for the trouble...its all good now...
0

Featured Post

Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

Question has a verified solution.

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

I've encountered valid database schemas that do not have a primary key.  For example, I use LogParser from Microsoft to push IIS logs into a SQL database table for processing and analysis.  However, occasionally due to user error or a scheduled task…
This article explains how to reset the password of the sa account on a Microsoft SQL Server.  The steps in this article work in SQL 2005, 2008, 2008 R2, 2012, 2014 and 2016.
This video Micro Tutorial shows how to password-protect PDF files with free software. Many software products can do this, such as Adobe Acrobat (but not Adobe Reader), Nuance PaperPort, and Nuance Power PDF, but they are not free products. This vide…
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…

688 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