I need help on the SSRS Last Function.
Sample for the report that I build.
I need to get the value of the last row using LAST Function but after I use Last Function the value I get is 20 it disregards the 0 value for ID 4 which is the last record
ID VALUE
1 10
2 0
3 20
4 0
Last 20
My guess would be that SSRS is giving you the correct value based on the scope which you're giving it. If you're not specifying a scope, then it will look at the lowest-level group it can find and return the last value in that group. Chances are, the data is being sorted at some point. Sorting in SSRS can occur in the SQL query, in the Tablix properties, or in the group properties.
If you have any sorting anywhere in the query or tablix or group that is sorting ascending, then depending on the scope specified for the Last() function, you would return 20.
Related
I have a dataset, returned from a SQL query, that has the following data:
TYPE_CODE
YEAR
The data set spans the years 2014 through 2019. The TYPE_CODE has 6 different values.
How do I setup an SSRS matrix to provide the following layout and data:
So far I have a matrix setup (see the pic below) that has a row group (TYPE_CODE1) for the TYPE_CODE data, and two column groups (YEAR_PREV and YEAR_CURRENT) that are filtered as follows:
- The second column in the matrix is the YEAR_PREV group, and is filtered to not show 2019 data (YEAR <> 2019)
- The 4th column in the matrix is the YEAR_CURRENT group, and is filtered to only show 2019 data (YEAR = 2019)
This method correctly splits my data, with the green highlighted columns in the pic below representing what is correct:
What is not correct is the average column, as I cannot figure out how to setup that column to only average the columns to the left (the previous years - 2015-2018) and not include the column to the right (2019).
I have tried several different expressions to no avail, primarily trying to limit the count function to only the YEAR_PREV group, like so:
=count(Fields!TYPE_CODE.Value, "PREV_YEAR")/4
This throws an error telling me that something along the lines of "group cannot be used in aggregate function...".
How do I calculate the average column correctly?
You need to have 2 column groups with filters applied, first one where year equals 2015-2018 and the second one equals only 2019.
In between each of these columns you need insert your average column that will reflect years 2015-2018.
I'm creating a report that shows the sales of item before a date range and after a date range.
The part I ran into trouble with is the percentage difference between the total sales on Date 1 and Date 2.
Items can have no sales for a certain week.
The user can select multiple item ID's in the item ID parameter.
I can update the question to post my SQL query if needed.
What I've tried
Since I put a group on item ID I thought the First and Last functions would work.
Here's my expression on the column PCT.
=(Last(Fields!total_sales1.Value, "Date1")- First(Fields!total_sales1.Value, "Date1")) / First(Fields!total_sales1.Value, "Date1") * 100
But when I run the report I get the following results.
I need an expression on PCT column that will give me a percentage difference for each item pairs.
It looks like your scope is incorrect. Check what the rowgroup is called where you group by item id (let's say the row group is called "yourItemRowGroupName").
Then change you expression to use that scope rather than "Date1".
In fact you may not need the scope at all as it should work within the scope that expression sits (in your case, within your ItemID group.).
So try
=(Last(Fields!total_sales1.Value)- First(Fields!total_sales1.Value)) / First(Fields!total_sales1.Value) * 100
Or..
=(Last(Fields!total_sales1.Value, "yourItemRowGroupName")- First(Fields!total_sales1.Value, "yourItemRowGroupName")) / First(Fields!total_sales1.Value, "yourItemRowGroupName") * 100
You may have to handle divide by zero but try this to start with before you add any more complications.
I've this report
Here I make the first sum because I've grouped values from each month (months are "Gennaio", "Febbraio", "Marzo" etc etc.). These values are hidden, but anyway I get the sum and I display the sum for each month.
Then I should make the second sum that use values for each month and display the total for each category. Categories are "TOTALE LAVORI RESTAURO", "TOTALE LAVORI EDILE" etc.)
This is the final sum, where I sum values from each category.
Everything is working well, but now I have to add a "month" parameter to the report that returns sums until a selected month. This parameter changes the sum 1 with this expression:
=Sum(IIf(Fields!mese.Value <= Parameters!mese.Value, Fields!costi.Value, 0))
Now, how should I change expression in SUM2 and SUM3 to work with this parameter?
If I copy that code, ther returns #Error and as far as I know I can't use ReportItems sum.
So any suggestion?
SUM #1 could remain Sum(Fields!costi.Value) because you need to display every months.
i.e.: display GIUGNO even if Parameters!mese.Value = 4 (APRILE).
So you have only to change SUM #2 and #3 because TOTALE LAVORI RESTAURO and TOTALI must show only costi from GENNAIO to Parameters!mese.Value; i.e. if Parameters!mese.Value = 4 display only GENNAIO-APRILE even if we have details about GIUGNO.
The expression gave error because you have NULL value in Fields!costi.Value or Fields!mese.Value: convert this value to zero in your DataSet and you won't have problems.
I have a trouble to sum fields.
This is what I have: I have list of employees and two rows of values for each, I also have calculations in SQL of running total for the 8 and 16 weeks for each employee for each of two rows using windowing function. I have to group employees by branches they work and calculate sum of running totals for the last 8 and 16 weeks for each row and then device row 1 by row 2. I need to use Last function, because I only need the running total for the last 8 and 16 weeks. The challenge is to go around and have something like: Sum(Last(Fields!Last116WeekSilk.Value) . this one obviously gives me an error. I have tried to add calculated field to the dataset with both Sum and Last functions, doesn’t work, tried RunningValue, doesn’t work. What else can I do to have the sum of last running totals?
Many thanks in advance
I would add the SQL ROW_NUMBER function to the query and derive the row number (e.g. 1 or 2) within each group. If you do this in descending sequence the row number 1 will always be the last row within the group.
Then in SSRS you can use an Iif to only show/calculate on row number 1.
I am building a report that looks like:
Last 30 Days Last 60 Days Last 90 Days
SLA Met* 1 3 5
SLA Missed* 2 4 6
Total 3 7 11
The datasource is via FetchXML and only one dataset is being used for the table. I am calculating the static rows, SLA Met and SLA Missed, using the expresion:
=(Count(IIf Condition, 1, Nothing)).
Any ideas how I would get the total of these two static rows, as they do not belong to a group, not fields that I can easily sum, and are defined by an expression?
Thanks.
If I clearly understood the problem, the solution would be simple: = (expression) + (expression)
This amount must be in the same table.
You can create calculated fields with your condition, then use that data to create your total rows. They would then belong to the group and would be easy to sum up.