I have a function that divides the results of 2 seperate datafiffs to provide a ratio. For some reason I cannot get the result to return as a decimal - it is only giving me integers. I have tried cast and converting both the idividual numbers and the results, no luck. If I write the query on it's own, casting the one of the values as decimal will return the right value. Any ideas what I am missing? Here is the function:
Create function fn_FTE(
@tkpr varchar(5),
@start datetime,
@end datetime)
Returns decimal
Begin
declare
@fte decimal
select @fte =
sum(datediff(dd,
(case
when eedatebeg < @start then @start
else eedatebeg
end),
(case
when eedateend > @end then @end
when eedateend is null then @end
else eedateend
end))) /datediff(dd,@start,@end)
from vw_employ_dates
where
eedatebeg < @end
and (eedateend > @start or eedateend is null)
and eudescrip = @tkpr
In my select statement I concatenate city+state+zipcode. In some cases the zipcode is 9 digits but is missing the '-'. How can I format zipcode to be '#####-####' when > 5 characters from the select statment. Thanks, Ken
My first post here. I have an Analysis Services Cube and I need to export some of its data into a flat file (a semicolon separated value file) with fixed length columns.
What I have in Integration Services now is:
DataReader Source (ADO.Net conection) Data Transformation (NTEXT -> WSTR) Derived Column (WSTR -> STR, and some ISNULL validation) Flat File Destination (Delimited by ";")
the thing is I have all the measures and calculated measures in the cube formated with format strings and they work fine when I do a query through the SQL server Managment Studio, but in Integration Services before the columns are written into the file they lose its format.
for example, I have a calculated member called "Deuda Total Nacional" that returns something like this +0001234,00 and I need to take off the decimal separator so it is written into the file like this +000123400 , I'm doing it this way
(ISNULL([Deuda Total Nacional]) ? "+00000000000" : REPLACE([Deuda Total Nacional],",",""))
I'm trying to create an email report which gives a result of multiple results from multiple databases in a table format bt I'm trying to find out if there is a simple format I can use.Here is what I've done so far but I'm having troble getting into html and also with the database column:
I have a prob with the following code... in that the value of the amount of the year 2001 is 0 so it is showing me division by zero prob can any one change the code and let me know the details
declare @year1 int declare @year2 int declare @month int
set @year1 = 2002 set @year2 = 2001 set @month =9
select case when sum(case WHEN a.oper_year = @year1 THEN a.amount else 0 end) = sum(case WHEN a.oper_year = @year2 THEN a.amount else 0 end) then 0 else ( (sum(case WHEN a.oper_year = @year1 THEN a.amount else 0 end) - sum(case WHEN a.oper_year = @year2 THEN a.amount else 0 end))/ sum(case WHEN a.oper_year = @year2 THEN a.amount else 0 end) )* 100 end as Percentage, from oper_sundata a, oper_type_new b where a.site_id = b.sun_site
I've been googling this for a while now and can't seem to find any elegant answers.
I'm looking for an automated way to present a FORMATED Excel Spreadsheet to the Customer from a stored procedure output.
Can anyone advise me the best method of doing this - should I / can I assign an Excel Template to the DTS Task output ?
His mind is set on Excel and the formatting is basic and easy to write in a Macro which I've done, but this requires human interaction to finish the task (Automated Run Once on opening etc).
In an ideal world an individual would send an email to the Server with two formated parameters (@FromDate & @ToDate) and would be emailed back a ready formatted S/Sheet. But I believe he would be willing to just select the relevant SpreadSheet for the Daily / Weekly / Monthly periods dumped.
In my query, there's a mathematical expression that takes a value from one table and divides it by another value (X). The problem is that X can be 0 sometimes and then I get an error. How can I prevent errors like this for the case of X=0? In access I would use IIF function, but it doesn't appear in SQL SERVER views. Thanks.
This query is part of a larger query that updates a table that holds statistics for reporting. It yields actual Unit per Minute by plant by month. Some of the plants don't produce anything in certain months, so I'm ending up with a Divide by Zero error. I think I just need to stick another CASE statement in for each month, but that seems like it could get pretty ugly.
Any suggestions on how to improve this?
SELECT FL.REPORT_PLANT, [JAN]= SUM(CASE WHEN MONTH(PC.MNTHYR) = 1 THEN PC.TONS * 2000 / PM.EA_WT ELSE 0 END)/ SUM(CASE WHEN MONTH(PC.MNTHYR) = 1 THEN PC.HOURS*60 ELSE 0 END), [FEB]=SUM(CASE WHEN MONTH(PC.MNTHYR) = 2 THEN PC.TONS * 2000 / PM.EA_WT ELSE 0 END)/ SUM(CASE WHEN MONTH(PC.MNTHYR) = 2 THEN PC.HOURS*60 ELSE 0 END), [MAR]= SUM(CASE WHEN MONTH(PC.MNTHYR) = 3 THEN PC.TONS * 2000 / PM.EA_WT ELSE 0 END)/ SUM(CASE WHEN MONTH(PC.MNTHYR) = 3 THEN PC.HOURS*60 ELSE 0 END), [APR]= SUM(CASE WHEN MONTH(PC.MNTHYR) = 4 THEN PC.TONS * 2000 / PM.EA_WT ELSE 0 END)/ SUM(CASE WHEN MONTH(PC.MNTHYR) = 4 THEN PC.HOURS*60 ELSE 0 END), [MAY]=SUM(CASE WHEN MONTH(PC.MNTHYR) = 5 THEN PC.TONS * 2000 / PM.EA_WT ELSE 0 END)/ SUM(CASE WHEN MONTH(PC.MNTHYR) = 5 THEN PC.HOURS*60 ELSE 0 END), [JUN]=SUM(CASE WHEN MONTH(PC.MNTHYR) = 6 THEN PC.TONS * 2000 / PM.EA_WT ELSE 0 END)/ SUM(CASE WHEN MONTH(PC.MNTHYR) = 6 THEN PC.HOURS*60 ELSE 0 END), [JUL]=SUM(CASE WHEN MONTH(PC.MNTHYR) = 7 THEN PC.TONS * 2000 / PM.EA_WT ELSE 0 END)/ SUM(CASE WHEN MONTH(PC.MNTHYR) = 7 THEN PC.HOURS*60 ELSE 0 END), [AUG]=SUM(CASE WHEN MONTH(PC.MNTHYR) = 8 THEN PC.TONS * 2000 / PM.EA_WT ELSE 0 END)/ SUM(CASE WHEN MONTH(PC.MNTHYR) = 8 THEN PC.HOURS*60 ELSE 0 END), [SEP]=SUM(CASE WHEN MONTH(PC.MNTHYR) = 9 THEN PC.TONS * 2000 / PM.EA_WT ELSE 0 END)/ SUM(CASE WHEN MONTH(PC.MNTHYR) = 9 THEN PC.HOURS*60 ELSE 0 END), [OCT]=SUM(CASE WHEN MONTH(PC.MNTHYR) = 10 THEN PC.TONS * 2000 / PM.EA_WT ELSE 0 END)/ SUM(CASE WHEN MONTH(PC.MNTHYR) = 10 THEN PC.HOURS*60 ELSE 0 END), [NOV]=SUM(CASE WHEN MONTH(PC.MNTHYR) = 11 THEN PC.TONS * 2000 / PM.EA_WT ELSE 0 END)/ SUM(CASE WHEN MONTH(PC.MNTHYR) = 11 THEN PC.HOURS*60 ELSE 0 END), [DEC]= SUM(CASE WHEN MONTH(PC.MNTHYR) = 12 THEN PC.TONS * 2000 / PM.EA_WT ELSE 0 END)/ SUM(CASE WHEN MONTH(PC.MNTHYR) = 12 THEN PC.HOURS*60 ELSE 0 END) FROM PRODUCTION_CMPLT PC INNER JOIN FACILITY_LINES FL ON PC.MANUF_SITE = FL.MANUF_SITE AND PC.PROD_LINE = FL.PROD_LINE INNER JOIN PROD_MASTER PM ON PC.PRODUCT=PM.PRODUCT WHERE YEAR(PC.MNTHYR) = YEAR(GETDATE()) AND PM.UOM<>'LB' GROUP BY FL.REPORT_PLANT
hi in a view, i create a field like field1/field2. in case that field2 is zero, i've got division by zero error. how can i change the value to 0 when field2 is 0 for avoiding get error.
It is common for me to need to create ratios from data in my database such as
SELECT ( list_value / sale_price ) as ratio FROM values
The value returned is always an integer whether decimal is cast or not. IE if sale_price is > list_value then 1 or 0 is returned instead of the percentage (ratio) as expected. Only whole numbers are returned. BTW. Same is true in postgres db I have as well. What is it that I am doing wrong?
I have a table in which i have two colums say discription and counts. the table has 10 rows. This table is created by extracting data from other table means its not a table that exist in system.
Now in my last row i want discription as '%mailed' and count as row1/row2
SELECT [Record Number], Date, Car, Miles_Start, Miles_Stop, Gallons_FillUp, Miles_Stop - Miles_Start AS Miles_Total, Miles_Total / Gallons_FillUp AS MPG FROM Sheet1_Table ORDER BY Date DESC, Car
Hi, I have Visual Studio 2008 Pro / Using VB 9.0 / SQL Server Express 2005. I am making a Miles per gallon calculator for my dad. All Fields /Cells are populated in two records excepting the Miles_Total & MPG. The Miles_Total Comes out fine but... the MPG does not . Any help with this Query would be greatly appreciated! Jeff L
I've got the following SQLSELECT count(*) FROM tablea AJOIN tableb B ON ..etc..WHERE a.string_val = 'test' ANDb.divider 0 ANDa.number 0 AND(a.number / b.divider 0)The b.divider value can be 0, but still I get the division by zeroerror message.I guess the reason is that the database performs the where statementsone at the time?So when performing the division a.number / b.divider it could get 0 inthe divider even if b.divider 0 is also part of the wherestatement??My question is then.. How can I work around this problem? Changing thedatabase to set b.divider always 0 is not an option
I would expect the first one to give me the most accurate result but the second query with a lower precision and scale returns a result with a greater scale.Thanx.
I want to do something simple but I don't know how to do it using MDX. I searched a solution on the web but I found nothing. I want to SUM the result of the division of two measures. I tried using the WITH MEMBER Measures.sum_divided AS SUM(x/y) but the result in the cells are all #Error.
Hi to all, Im using SQL Server 2000. If i divide two integer column values, the result i am getting is integer. i.e Update tblStudents SET Percentage=(AttendedClasses/TotalClasses); AttendedClasses,TotalClasses are two column names(Integer). I hav declared Percentage column as float. The result im getting is integer value.. I want the actual float value(i.e Percentage) How to Resolve this?? Help me with this issue.. thanks in advance.
Hi - I have what seems like a simple problem and I cannot find an answer to it. I'm hoping someone here can help.
I want to divide 2 numbers but have the answer come back with no decimal places. I don't want to round up or down..just give me the whole number and drop the decimal places. For example:
Select units/60 as answer
And units = 280. I want the "answer" to be 4 and NOT 4.66.
ALTER view [dbo].[_tec_SOP_POP_link] as select SOP60100.SOPNUMBE as SOP_ORDER_NUMBER, SOP60100.QTYRECVD as QtyReceivedSoFar, SOP30200.sopnumbe as SOP_INV_NUMBER, SOP60100.PONUMBER, SOP60100.QTYONPO as POQTY_REMAININGQTY, POP10110.ITEMNMBR as ITEM_NUMBER, POP10110.ITEMDESC as itemdescription, POP30310.UNITCOST as ReceivedCost, Sum (case when pop30310.ponumber = sop60100.ponumber AND pop30310.trxsorce like 'POIVC%' then pop30310.umqtyinb else 0 end) as TOTALINVOICEDMATCHED, Sum (case when pop30310.ponumber = sop60100.ponumber AND pop30310.trxsorce like 'POIVC%' then pop30310.extdcost else 0 end) as TOTALDOLLARSINVOICEDMATCHED, from sop60100 inner join sop30200 on sop60100.sopnumbe = sop30200.ORIGNUMB AND sop30200.soptype = 3 inner join POP10110 on SOP60100.PONUMBER = POP10110.PONUMBER inner join pop30310 on sop60100.ponumber = pop30310.ponumber where SOP60100.ORD = POP10110.ORD GROUP BY SOP60100.SOPNUMBE, SOP60100.QTYRECVD, SOP30200.sopnumbe, SOP60100.PONUMBER, SOP60100.QTYONPO, POP10110.ITEMNMBR, POP10110.ITEMDESC, POP30310.UNITCOST, pop30310.umqtyinb
I want to add a column (UNITCOSTINVOICEDMATCHED)that divides TOTALDOLLARSINVOICEDMATCHED/TOTALINVOICEDMATCHED
I inserted the following (which did not work)-
Sum (TOTALDOLLARSINVOICEDMATCHED/TOTALINVOICEDMATCHED) as UNITCOSTINVOICEDMATCHED
error said - TOTALDOLLARSINVOICEDMATCHED column not recognized
The I inserted this statement - thinking I needed another case statement -
Sum(case when pop30310.ponumber = sop60100.ponumber AND pop30310.trxsorce like 'POIVC%' then sum(pop30310.extdcost)/ sum(pop30310.umqtyinb) else 0 end)as UNITCOSTINVOICEDMATCH
this returned the error -
Msg 130, Level 15, State 1, Procedure _tec_SOP_POP_link, Line 2 Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
I am trying to divide one number by another and I can't get it toreturn the right value....in general I want to see how many fruits I have, then get the number ofapples and divide the apples by that total to get the percentage ofapplesI haveDeclare @Val decimal(6,2)Set @Val=((select count(*) from Fruits where fruit='apples') /* = #APPLES/(select count(*) from Fruits) /* = TOTAL FRUITS)SELECT @Valin my actual case the apples=7 and the fruits=8but I can only return 87 or 875 (by multiplying by 100 or 1000) but Ican't get 87.5, which is the value I need.
To set the stage, Tables are set up as such for this question: -----------
Table: Answers ID - Integer - Auto Answer - Integer QuestionID - Integer - FK from the QuizMaster table StudentID - Integer - FK from the Students table
Table: QuizMaster
ID - Integer - Auto Answer - Integer
Table: Students ID - Integer - Auto StudentName - Varchar(50) ---------- I would like to have an either a sql statement (1st) or a stored procedure (2nd) that would give me the percent correct for each student on the test.
In Access I could cheat and use this:
Code BlockSELECT Students.StudentName, Count(Students.StudentName) AS TotalCorrect, (SELECT Count(QuizMaster.ID) FROM QuizMaster;) AS TotalQuestions, ([TotalCorrect])/([TotalQuestions])*100 AS PercentValue FROM (Answers INNER JOIN Students
ON Answers.StudentID = Students.ID) INNER JOIN QuizMaster ON (Answers.Answer = QuizMaster.Answer) AND (Answers.QuestionID = QuizMaster.ID) GROUP BY Students.StudentName ORDER BY Students.StudentName, PercentValue;
Which is composed of the following...
Code Block
SELECT Students.StudentName,
Count(Students.StudentName) AS TotalCorrect FROM (Answers INNER JOIN Students
ON Answers.StudentID = Students.ID) INNER JOIN QuizMaster ON (Answers.Answer = QuizMaster.Answer) AND (Answers.QuestionID = QuizMaster.ID)
GROUP BY Students.StudentName;
SELECT Count(QuizMaster.ID) AS TotalQuestions FROM QuizMaster;
([TotalCorrect])/([TotalQuestions])*100 AS PercentValue
But... that wont fly in SQL Server...What would work without using temp tables? What would be the EASIEST way to do this?
DECLARE @TotalQuestionsAsked as Integer; DECLARE @StudentName as VarChar(50); DECLARE @QuestionsCorrect as Integer; DECLARE @PercentCorrect as Float;
set @TotalQuestionsAsked = select COUNT(*)FROM QuizMaster; set @StudentName = select StudentName from Students where ID = @StudentID;
set @QuestionsCorrect = select count(Answers.ID) from Answers LEFT JOIN QuizMaster on Answers.QuestionID = QuizMaster.ID where StudentID = @StudentID AND QuizMaster.Answer = Answers.Answer; set @PercentCorrect = (CAST (@QuestionsCorrect AS FLOAT) / CAST (@TotalQuestionsAsked AS FLOAT)) * 100.0;
select @QuestionsCorrect as TotalCorrect, @StudentName as Student, @TotalQuestionsAsked as NumQuestions, @PercentCorrect as CorrectPct;
END
But I need this as a datasource for a datagrid that would show all students etc... so using a parameter isn't really what I want. So... could a stored procedure work for this?
I am just learning SQL Server Express Edition and have been experimenting with various ANSI settings, etc. I think I may have accidentally set something incorrectly and don't know how to undo it. When I divide 3/2 I get 1.00 instead of 1.5.
My function in my report, thu function I currently use is the following:
Public Function CalcDivision(ByVal Numerator As Object, ByVal Denominator As object, ByVal DivideByZeroDefault As Object) As Object If Denominator <> 0 Then Return Numerator/Denominator Else Return DivideByZeroDefault End If End Function
I've got two integer columns in the table, third one is computed by previous two ones division. That's fine, however sometimes can happen that divided by column is set to zero. How can i avoid division by zero exception, please? TIA
Hello all, first post and really new to sub subs too! If any has time, I'm trying to retrieve data like this: Reason Countee Perc BENT HEAD 26 (% OF 26 TO 92) OTHER 24 (% OF 24 TO 92) etc...
I'm using the SQL below but can't seem to work out the percentage calculation. (The below only returns 0's). Thanks for any help up front!!!
SELECT Reason, COUNT(Reason) AS Countee, COUNT(Reason) / (SELECT COUNT(ReasonCode)FROM rb_power.RBCOBBLETRK)AS Perc FROM rb_power.RBCOBBLETRK GROUP BY Reason ORDER BY Countee DESC
I have a table that have the following fields: Outlet,EmployeeNumber,WorkingDate,WorkingHour,Ince ntive
when I put it into a matrix report, the Outlet is assiged to Page, the EmployeeNumber is assgined to ROW, the WorkingDate is assigned to Column and both WorkingHour & Incentive is assigned to Data(display in row but not column). There is a subtotal at the extreme right side.
May I know how can I squeeze in another element display at the report showing sum of Incentive / sum of WorkingHour? This new element shall be placed at each row as it's indicating the average incentive of each employee.