SSRS expression sum question

I want to add a column after Total lets say..'Progress' where Progress = sum(Actual)/sum(Budget)
The only filter on Progress is to consider only those values from months where both Actual and Budget are present.
So, e.g.
For first row: 0/0 = 0
For second row: 0/0 = 0
For third row: 28334/67060(instead of 200511) = 0
if there would have been an Actual value for the month of August e.g. 100, then (28334+100)/(67060+66614)
For fourth row: 0/0 = 0
How can I achieve this using expressions in SSRS?
Thanks in advanc

Hi rockstar283,
As per my understanding, you want to add a column names Progress, it is calculated from the values of Actual and Budget. In current month, Progress = sum(Actual)/sum(Budget), else, it is set to 0. If so, please refer to the following expression:
=IIF(Month(Fields!pmonth.Value)=Month(Today()),Sum(Fields!Actual.Value),0)/IIF(Sum(Fields!budget.Value)=0,1,Sum(Fields!budget.Value))
The following screenshot is for your reference:
If my understanding is not correct, please feel free to let me know. I would appreciate it if you could give us detailed description of your requirements, it’s also better to provide the table structure and some sample data. It will help us move more quickly
toward a solution.
Thanks,
Wendy Fu

Similar Messages

  • SSRS Using Sum and = in a conditional operator

    Hi,
    Still getting to grips with SSRS so any help would be appreciated.
    My aim is to calculate a conditional field using the SSRS expression feature, the datasource is a shared dataset which i can't alter so i can't just go an alter the SQL query or anything.
    In SQL my query would be like this: SELECT COUNT(TotalHours) FROM TableName WHERE TotalHours <= 24
    Is there anyway to combined the Iff and Sum operator's to get a result like the above?
    At present all i managed to come up with is the below but obviously it's not returning the correct amount.
    =IIf(Fields!TotalHours.Value <= "24", Sum(Fields!TotalHours.Value), 0 )
    Please help!
    Edit: Please note that i'm not trying to sum a field based on a condition that relates to another column, i just need a sum of 'TotalHours' that are less than or equal to 24, please also note there is another field called category, each category needs a
    sum of the above.
    Regards,
    Marcus
    Plain_Clueless

    Hi Marcus,
    According to your description, you want to count [TotalHours] when the value of this field is less than 24, right?
    In your scenario, you could use the expression like below:
    =Sum(IIF(Fields!TotalHours.Value<=24,1,0))
    Please note don’t put this expression in the detail rows, you could refer to our test results:
    If you have any question, please feel free to ask.
    Best regards,
    Qiuyun Yu
    Qiuyun Yu
    TechNet Community Support

  • Issue with SSRS Expression

    Hi all, 
    I am facing some issue with ssrs expression. 
    I used below expression to show sum of budget. 
    =Sum(  CDbl(Fields!Budget.Value))
    When I preview the report it shows #Error in that textbox. 
    Please help me to fix this one , I am not getting where its breaking.. 
    Thanks
    Rohit

    Hi Rohit,
    According to your description, you want to sum the [EstimatedCostField] with an expression.
    In your scenario, since the [EstimatedCostField] is budget which you want to perform sum calculation, you should specify the sum expression like below:
    =Sum(CDbl(Fields!EstimatedCostField.Value))
    If issue persists, please run the report in the BIDS then check the warning message in output to see the detail information about the #Error. Besides, please also share the report design for our analysis.
    If you have any question, please feel free to ask.
    Best regards,
    Qiuyun Yu
    Qiuyun Yu
    TechNet Community Support

  • SSRS expression returns #error value in some cells

    Hello,
    What do you think below expression sometimes return #error value in ssrs.
    =SUM(Fields!X.Value / 100 * DateDiff(DateInterval.Day,Fields!s_date.Value,Fields!e_date.Value)) /
    IIF( SUM(DateDiff(DateInterval.Day,Fields!s_date.Value,Fields!e_date.Value)) = 0
    ,nothing
    ,SUM(DateDiff(DateInterval.Day,Fields!s_date.Value,Fields!e_date.Value))

    Hi,
    Use below expression to overcome the issue:
    =
    IIF( SUM(DateDiff(DateInterval.Day,Fields!s_date.Value,Fields!e_date.Value)) = 0
    , 0
    , SUM(   Fields!X.Value / 100 
    * DateDiff(DateInterval.Day,Fields!s_date.Value,Fields!e_date.Value)
      SUM(DateDiff(DateInterval.Day,Fields!s_date.Value,Fields!e_date.Value)) 
    Thanks, Madhu
    Hi madhu,
    I have value for Month field as 0. I have used MonthName function in the report. So im getting error as #Error
    Expression:
    MONTHNAME(Fields!Month.Value)& " "& Fields!Day.Value &" "&  Fields!Year.Value
    Please help me to resolve the issue.
    Thanks in Advance..
    Regards,
    LuckyAbdul

  • How Get last five quarters data using ssrs expression

    Hi All,
    i have an ssrs report where i have to get last five quarters data  and also last five months data when i select quarterly/monthly parameter.....
    is there any possibilty that we can get this using ssrs expression
    any help please.........

    Hi Mr.SMK,
    According to your description, there is an SSRS report, you want to create a parameter, when you select quarterly, data of last five quarters will be displayed. If you select monthly, data of last five months will be displayed. If that is the case, please
    refer to the following steps:
      1. In design surface, in Report Data pane, right-click Parameters and click Add Parameter.
      2. Type parameter name and prompt, set Data Type to Date/Time.
      3. Click Available Values in left pane, select Specify values.
      4. Click Add button, in Label text box, type Quarterly, then click (fx) button and type the expression like below:
    =DateAdd("q",-5,Today())
      5. Click Add button, in Label text box, type Monthly, then click (fx) button and type the expression like below:
    =DateAdd("m",-5,Today())
      6. Right-click the dataset used to retrieve data for the report and open Dataset Properties dialog box.
      7. Click Filters in left pane, click Add button, select Data from Expression drop down list, set Operator to >=, in Value text box, type [@ParameterName].
    The following screenshots are for your reference:
    If you have any more questions, please feel free to ask.
    Thanks,
    Wendy Fu
    Wendy Fu
    TechNet Community Support

  • SSRS Expression to calculate percentage with the denominator being the first value in the same column group in a matrix report

    Hello, Expert,
    Could you please help me with the following problem? Thanks in advance!
    I have designed the matrix report (SSRS 2012) with database table structure looks like below.    
    Week           
    Version
         Count
    Week1
    V1.1
    4000
    Week1
    V1.2
    4000
    Week1
    V1.3
    4000
    Week2
    V1.1
    3000
    Week2
    V1.2
    3000
    Week2
    V1.3
    3000
    Week3
    V1.1
    2000
    Week3
    V1.2
    2000
    Week3
    V1.3
    2000
    Week4
    V1.1
    1000
    Week4
    V1.2
    1000
    Week4
    V1.3
    1000
    The matrix report displays like below. Column grows based on no of Week in the table.   
    Week1
    Week2
    Week3
    Week4
    V1.1
    4000
    3000
    2000
    1000
    V1.2
    4000
    3000
    2000
    1000
    V1.3
    4000
    3000
    2000
    1000
    What I want to do now is: instead of the Count values, I need to calculate the percentage of each week over the
    Count in Week1 so that each cell displays Count(Week2)/Count(Week1), Count(Week3)/Count(Week1), etc. What is the SSRS expression for that? I’m new to SSRS, Please help!

    Heidi,
    Thank you so much for your reply and solution! Now I know how to get the first field in a group. But I can't apply your solution directly just yet because in order to explain my problem I simplified my data structure. My real data structure has a nested
    group like this:
    Week  VersionMajor VersionMinor Count
    Week1  V1           V1.1         2000
    Week2  V1           V1.1         1500
    Week3  V1           V1.1         800
    Week1  V1           V1.2         1000
    Week2  V1           V1.2         500
    Week3  V1           V1.2         200
    Week1  V1           V1.1         2000
    Week2  V1           V1.1         1500
    Week3  V1           V1.1         800
    Week1  V1           V1.2         1000
    Week2  V1           V1.2         500
    Week3  V1           V1.2         200
    Here is the query for the above data:
    SELECT 'Week1' AS Week, 'V1' AS VersionMajor, 'V1.1' AS VersionMinor, 2000 AS Count
    UNION ALL
    SELECT 'Week2' AS Week, 'V1' AS VersionMajor, 'V1.1' AS VersionMinor, 1500 AS Count
    UNION ALL
    SELECT 'Week3' AS Week, 'V1' AS VersionMajor, 'V1.1' AS VersionMinor, 800 AS Count
    UNION ALL
    SELECT 'Week1' AS Week, 'V1' AS VersionMajor, 'V1.2' AS VersionMinor, 1000 AS Count
    UNION ALL
    SELECT 'Week2' AS Week, 'V1' AS VersionMajor, 'V1.2' AS VersionMinor, 500 AS Count
    UNION ALL
    SELECT 'Week3' AS Week, 'V1' AS VersionMajor, 'V1.2' AS VersionMinor, 200 AS Count
    UNION ALL
    SELECT 'Week1' AS Week, 'V1' AS VersionMajor, 'V1.1' AS VersionMinor, 2000 AS Count
    UNION ALL
    SELECT 'Week2' AS Week, 'V1' AS VersionMajor, 'V1.1' AS VersionMinor, 1500 AS Count
    UNION ALL
    SELECT 'Week3' AS Week, 'V1' AS VersionMajor, 'V1.1' AS VersionMinor, 800 AS Count
    UNION ALL
    SELECT 'Week1' AS Week, 'V1' AS VersionMajor, 'V1.2' AS VersionMinor, 1000 AS Count
    UNION ALL
    SELECT 'Week2' AS Week, 'V1' AS VersionMajor, 'V1.2' AS VersionMinor, 500 AS Count
    UNION ALL
    SELECT 'Week3' AS Week, 'V1' AS VersionMajor, 'V1.2' AS VersionMinor, 200 AS Count
    And my matrix table looks like this:
    What I need to do is to calculate the percentage of each week over week1 for
    1) V1 Total
    2) V1.1
    3) V1.2
    I can't use your solution directly because I need to apply Sum function for each cell and the Sum function gives me error when I try to use it on the denominator
    First(Fields!Count.Value,"VersionMinor"). If you could help me further to get to the final solution, I'd really appreciate it!!
    Happy New Year!

  • Pass function name as parameter in SSRS expression

    I have a function (GetColumnFieldName) which returns string datatype
    Now I want to use this function in below SSRS expression
    =Code.GetDisplay("FirstName",Parameters!SelectedCols.Value,Parameters!DisplayCols.Value)
    At the above expression I want to replace "FirstName" with  function GetColumnFieldName which returns the same "FirstName".
    Please suggest.

    Hi Jajatibabu,
    If I understand correctly, you want to use GetColumnFieldName function which returns a field name to replace the “FirstName” in the expression you post.
    If in this scenario, we can directly use Code.GetColumnFieldName(parameters) to replace the “FirstName” like below:
    =Code.GetDisplay(Code.GetColumnFieldName(parameters),Parameters!SelectedCols.Value,Parameters!DisplayCols.Value)
    Note that we should type the correct parameters in the GetColumnFieldName function.
    If there are any misunderstanding, please elaborate the issue for further investigation.
    Thanks,
    Katherine Xiong
    If you have any feedback on our support, please click
    here.
    Katherine Xiong
    TechNet Community Support

  • SSRS Expression help

    Hello,
    Is there anyway to default to the first day of the month in a SSRS expression.  I'm looking to do the reverse of the EOMONTH() function.
    The date value is coming from a parameter @BegDate and formatted YYYY-MM-DD.  So if the parameter is set to 2015-08-31 it would show 2015-08-01
    Any information would be greatly appreciated.
    x

    I ended up using the following:
    DateSerial(Year(Parameters!BegDate.Value), Month(Parameters!BegDate.Value), 1
    x

  • SSRS expression for today,yesterday,Lastweek ,Last fortnight,Last Month, Year to date

    Hi All;
    I have a field called createdon 
    Using this field i need to create the SSRS expression for the table as below 
    Any help much appreciated
    Thanks
    Pradnya07

    use expressions as below
    assuming this is to be done in SSRS
    Today
    =COUNT(IIF(
    DateDiff(DateInterval.Day,Cdate("01/01/1900"),Fields!createdon.Value) = DateDiff(DateInterval.Day,Cdate("01/01/1900"),Now()),Fields!YourRequiredField.Value,Nothing))
    Yesterday
    =COUNT(IIF(
    DateDiff(DateInterval.Day,Cdate("01/01/1900"),Fields!createdon.Value) = DateDiff(DateInterval.Day,Cdate("01/01/1900"),Now())-1,Fields!YourRequiredField.Value,Nothing))
    LastWeek
    =COUNT(IIF(
    DateDiff(DateInterval.Week,Cdate("01/01/1900"),Fields!createdon.Value) = DateDiff(DateInterval.Week,Cdate("01/01/1900"),Now())-1,Fields!YourRequiredField.Value,Nothing))
    Last fortnight
    =COUNT(IIF(
    (DateDiff(DateInterval.Week,Cdate("01/01/1900"),Fields!createdon.Value) = DateDiff(DateInterval.Week,Cdate("01/01/1900"),Now())-1)
    Or (DateDiff(DateInterval.Week,Cdate("01/01/1900"),Fields!createdon.Value) = DateDiff(DateInterval.Week,Cdate("01/01/1900"),Now())-2),Fields!YourRequiredField.Value,Nothing))
    Last Month
    =COUNT(IIF(DateDiff(DateInterval.Month,Cdate("01/01/1900"),Fields!createdon.Value) = DateDiff(DateInterval.Month,Cdate("01/01/1900"),Now())-1,Fields!YourRequiredField.Value,Nothing))
    Year To Date
    =COUNT(IIF(DateDiff(DateInterval.Year,Cdate("01/01/1900"),Fields!createdon.Value) = DateDiff(DateInterval.Year,Cdate("01/01/1900"),Now())
    And
    DateDiff(DateInterval.Day,Cdate("01/01/1900"),Fields!createdon.Value) <= DateDiff(DateInterval.Day,Cdate("01/01/1900"),Now()),Fields!YourRequiredField.Value,Nothing))
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

  • SSRS Expression to compare two values and get data from another dataset

    Hi,
    I have a requirement where in i need to compare a value of a dataset (not the one which table is poiting to)
    with the value of a text box, and return the count if it matches else 0, the expression is as below. Here 
    industryName and recCount are from the dataset ds_MedimOrLowImpactEntities.  whats wrong in this expression
    =Sum(IIF(Fields!industryName.Value = reportItems!hpapra_name.Value, Fields!RecCount.Value, 0), "ds_MediumOrLowImpactEntities")
    This is the error that i am getting:
    Any help on this is appreciated
    Kruthi Hegde

    Hi Kruthi,
    After testing the issue in my local environment, I can reproduce it. Just the error message said, “Aggregate function can be used only on report items contained in page headers and footers”. So the sum function that contains report items should be stayed
    at page headers or footers. Besides, you said the hpapra_name textbox contain a field from another dataset, not the ds_MedimOrLowImpactEntities dataset. While in Reporting Services, Report item expressions can only refer to other report items within the same
    grouping scope or a containing grouping scope. So consider the two issues, we should use some other expression to instead the “reportItems!hpapra_name.Value” expression.
    Take a look at the "Looking up values from another dataset" topic here:
    http://msdn.microsoft.com/en-us/library/ms159673.aspx#LookupFunctions
    Hope this helps.
    Thanks,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support

  • Ssrs expression invalid swtich case

    I am unable to execute the below expression.. error when i see the report preview as
    The defenition of the report is invalid
    The value expression for the text box'Text Box1' has a nested aggregate that specifies a dataset scope.Inner aggregates cannot specify a dataset scope.
    My Expression is
    = "Record contains "
    + Switch(
    Sum(Fields!FQ.Value, "ds") <> 0 and Sum(Sum(Fields!QC.Value, "ds") + Sum(Fields!QA.Value, "ds") )<> 0 , "Fit and Auto",
    Sum(Fields!FQ.Value, "ds") <> 0 and Sum(Sum(Fields!QC.Value, "ds") + Sum(Fields!QA.Value, "ds") )= 0 , "Fit",
    Sum(Fields!FQ.Value, "ds") = 0 and Sum(Sum(Fields!QC.Value, "ds") + Sum(Fields!QA.Value, "ds") ) <> 0 , "Auto"
    ShanmugaRaj

    Hi ShanmugaRaj,
    After taking a simple test in my local environment, I can reproduce this issue. Based on my research, the issue is caused by the expression “Sum(Sum(Fields!QC.Value, "ds") + Sum(Fields!QA.Value, "ds") )“. Just as the error message shown, inner aggregates
    cannot specify a dataset scope.
    If I understand correctly, you just want to use the expression to calculate the value of Sum(Fields!QC.Value, "ds")  plus Sum(Fields!QA.Value, "ds"). If in this case, we can directly use the expression below to achieve your requirement:
    (Sum(Fields!QC.Value, "ds") + Sum(Fields!QA.Value, "ds"))
    So the complete expression is like below:
    = "Record contains  " + Switch( Sum(Fields!FQ.Value, "ds") <> 0 and (Sum(Fields!QC.Value, "ds") + Sum(Fields!QA.Value, "ds")) <> 0 , "Fit and Auto",Sum(Fields!FQ.Value, "ds") <> 0 and (Sum(Fields!QC.Value, "ds") + Sum(Fields!QA.Value,
    "ds") )= 0 , "Fit",Sum(Fields!FQ.Value, "ds") =  0 and (Sum(Fields!QC.Value, "ds") + Sum(Fields!QA.Value, "ds") ) <>  0 , "Auto")
    If there are any misunderstanding, please elaborate the issue for further investigation.
    Thanks,
    Katherine Xiong
    If you have any feedback on our support, please click
    here.
    Katherine Xiong
    TechNet Community Support

  • SSRS Expression for Conditional Filtering using the "IN" operator

    Hello,
    I need to filter my dataset based on a parameter:
    If Period= 1 then Week must be in (W1, W2, W3),  Else Week must be in (W10, W20, W30)
    I tried using the "IN" operator but don't know how to create the expression for the "Value" field. I tried the following:
    iif(Parameters!Period.Value = 1,
    "W1, W2, W3",
    "W10, W20, W30")
    But it doesn't work.
    Expression: Week
    Operator: IN
    Value: ???
    Any help would be highly appreciated!

    Hi,
    Use split function.
    See this expression: IIF(Parameters!Period.Value = 1, SPLIT("W1,W2,W3",","), SPLIT("W10,W20,W30",","))
    http://social.msdn.microsoft.com/Forums/sqlserver/en-US/8da78c9b-7f0c-42f1-a9c4-82f065f317c9/using-the-in-operator-in-ssrs-expressions
    Thanks Shiven:) If Answer is Helpful, Please Vote

  • SSRS expression for division

    Hi All,
    Below is the my table with SSRS expressions marked as A and B 
    Expression A gets the serial number 1, 2, 3 etc
    I need to get expression A/B
    Any help on this much appreciated
    Thanks 
    Pradnya07

    It's look like you want B/A, not A/B.
    You can try couple things. If you are allowed to use ReportItems and refer to the textbox value, then simply use this:
    =ReportItems!textboxnameforB.Value / ReportItems!textboxnameforA.Value
    If that gives you error as far as not allow to use ReportItems, then try create a divide function in custom code and then pass the value to it.
    Public Function Divide(Num1 as double, Num2 as double) AS double
        IF IsNothing(Num1) Or  IsNothing(Num2) Or Num1 = 0 Or Num2 = 0 Then
            Divide = 0
        ELSE
            Divide = Num1  / Num2
        END IF
    End Function
    Then, simply use this in the textbox you want the value:
    =code.Divide(RunningValue(Fields!new_programmeoutputid.Value,CoutDistinct, "new_outputs"),RunningValue(Fields!new_claimmonthid.Value,CountDistinct,
    Nothing))
    If that still does not work, then try to bring these values in the query itself.
    good luck.

  • SSRS Expression with OR

    Hi, 
    Can anyone tell me how to use OR in an SSRS expression?
    I would like to set the BorderStyle Left (& Right) property to "None" for two rows so I need to
    use an OR (6 or 9)  
    This is what I have so far:
    =IIf(RowNumber(nothing)=6,"None","Default") 

    Hi,
    Try Below,
    =Switch(RowNumber(nothing)=6 ,"None",RowNumber(nothing)=9,"None")
    OR
    =IIf(RowNumber(nothing)=6 OR RowNumber(nothing)=9,"None","Default")
    OR
    =IIf(RowNumber(nothing)=6,"NONE",IIf(RowNumber(nothing)=9,"NONE","Default"))
    Thanks

  • Ssrs expression to sql query

    Hi,
    I am unable to convert the below ssrs expression to sql query. can you guys help.
    --          IIF(Parameters!parameter1.Value Is Nothing, 
    --               " 3>2 ", 
    --               "column1 NOT LIKE
    --                           Replace(IIF(Left(Parameters!parameter1.Value, 1) = "'", 
    --                                             Parameters!parameter1.Value, 
    --                                             "'" & Replace(Parameters!parameter1.Value, "'", "''")  "'"),
    Thanks.

    Thank you for your response Carnegie,
    I actually have two stored procedures as below. (columns and joined tables are excluded)
    I need to change the dates of @DateFrom and @DateTo parameter, I am passing @DateFrom_FD and @DateTo_LD as well.
    CREATE ROCEDURE [dbo].[Test]
    (@DateFrom
    SMALLDATETIME
      , @DateTo
    SMALLDATETIME
      , @program
    VARCHAR(MAX))
    AS
    DECLARE
    @DateFrom_FD
    SMALLDATETIME
           , @DateTo_LD
    SMALLDATETIME
    SET @DateFrom_FD = DATEADD(MONTH,DATEDIFF(MONTH,0,@DateFrom),0)
    SET @DateTo_LD = DATEADD(DAY,-1,DATEADD(MONTH,DATEDIFF(MONTH,0,@DateTo)+1,0)) 
    SELECT 
      DimDate.[Year]
    , DimDate.[Month]
    , DimDate.PK_Date
    , CustomerID
    FROM DimDate
    WHERE DimDate.PK_Date BETWEEN @DateFrom_FD AND @DateTo_LD
    Now I am using one of the SP as a main report and the other SP as a subreport.
    In order to configure the main report and the subreport, I believe that I need to link them with parameters.
    However, in the parameters of subreport properties, the option given are only @DateFrom and @DateTo.
    No @DateFrom_FD AND @DateTo_LD
    Therefore, I am thinking to use expressions to convert @DateFrom and @DateTo the same way I did in SQL.
    I am not sure if this works....but this is the only thing that I could think of.
    Thank you,
    YJB5151

Maybe you are looking for