SSRS SQL 2008 R2 - How to reference the value of other groups? - sql-server

I have a matrix setup in the report designer in BIDS. Below is a screenshot:
All I want to do is use an expression to multiply the value of COL GROUP 1 by COL GROUP 2, for each ROW GROUP as illustrated in red. What would be the best way to achieve this?
EDIT: For clarity, each column group is filtered to only return a single value per adjacent column group

On a per row basis, you can use..
=ReportItems!ColGroup1Value.Value * ReportItems!ColGroup2Value.Value
This assumes that the textbox which contains the value for "ColGroup1Value" is named ColGroup1Value.
See https://learn.microsoft.com/en-us/sql/reporting-services/report-design/built-in-collections-reportitems-collection-references-report-builder for more information about ReportItems.

Related

how to mark cell when the row data is changing on ssrs

I have a SSRS report.
I have an order columns.
I want to mark both rows where order is changing in yellow
How to do like this?
Give this a try. Make a Parent Group on your STR_ORDER_ID. Don't create a header and remove the column only (after you create the group). The only issue here is that you'll get the coloring on the first and last row of the report.
=IIF(RowNumber("GroupName") = CountRows("GroupName"), "LightBlue",
IIF(RowNumber("GroupName") = 1, "LightBlue","Silver"))

Birt report : How to hide in's and out of the table value in Birt Report

I have a following employee table value as below :
name | cost
john | 1000
john | -1000
john | 5000
when we add the cost column total will be 5000.
I need to print only the 3rd row in BIRT report, since the 1st and 2nd row get cancelled out each other.
I'm stuck at filtering the table for above scenario.
Couldn't you just solve this using SQL like
select name, sum(cost)
from employee
group by name
order by name
?
Or do you just want to exclude two rows if they have exactly the same cost, but with different signs? Note that this is actually something different, take for example the three rows [ john|1, john|2, john|-3 ]? In this case, a pure SQL solution can be achieved using the SQL analytic functions (at least if you are using Oracle).
Elaborate your question. Its not clear if these are columns or rows.
If These are columns:
Create a computed column in your dataset
In Expression builder of that column add/sub values using dataSetRow['col1'] and dataSetRow['col2']
Add only that computed column to your table.
If these are rows
Select rows you don't want to print
Go to properties tab
Find Visibility property and click on it
Check Hide Element option

How can I get SSRS to create subheadings?

The Problem
I'm building an SSRS report which requires regular group headings on certain rows. The data returned from the database query includes a column with a bit flag indicating which rows need to be treated as group subheadings.
Here's a snippet of the source data:
Note the IsGroupHeading column, where the flag is set to 1 on the first row ("0401").
I want to produce output which looks like this Excel mockup:
So every time the report encounters a row where IsGroupHeading equals 1, it generates a bold group heading row followed by a row with column headings.
What's Happening
I've tried creating a row group in SSRS with the expression =Fields!IsGroupHeading.Value = 1 but I get unexpected results: (1) Only the first group heading is treated specially, and (2) the group heading row is repeated underneath the heading. The result looks like this:
Notice that the "0401" row is repeated under the group heading. In addition, only the first group heading ever gets this special treatment. The report simply ignores subsequent group headings and renders them as normal data rows.
The Question
I've spent hours trying to get this right and this is the closest I've been able to get it and my googling on row groups turns up pages mostly about creating subtotals, so I'm throwing this one out to the community hoping some SSRS experts can help me with this.
I'm going to assume that you're doing this in SQL and that all tariff numbers start with the group header tariff number (in this case, 0401).
Let's say your SQL currently looks like this:
SELECT TariffNumber, RowDescription, TariffRate, IsGroupHeading
FROM Tariffs
What we want to do is join this table on itself to give the group TariffNumber and RowDescription columns on each row to enable us to group on it. We also want to exclude the GroupHeader Tariff from the Details rows. So we get something like this:
SELECT TariffGroup.TariffNumber AS GroupNumber, TariffGroup.RowDescription AS GroupDescription,
TariffDetail.TariffNumber, TariffDetail.RowDescription, TariffDetail.TariffRate
FROM Tariffs AS TariffDetail
INNER JOIN Tariffs AS TariffGroup ON TariffGroup.TariffNumber = Left(TariffDetail.TariffNumber, CharIndex(TariffDetail.TariffNumber, '.')-1) AND TariffDetail.IsGroupHeader = 0
Now you just need to group on GroupNumber and you're done.

Add each row in a single cell

I have a requirement in ssrs report for display data like this.
I have to show 2 two rows data in one row in ssrs as shown below. Row count is unknown.
Please check another example.
Max two cell in one row in ssrs. I have to do this dynamically because I don't have any fix count in my data base table. If my table contain 3 rows it will display like first example but it it has 6 rows then it will looks like 2nd example.
Any suggestion how I can achieve.
The only way I know to do this left-to-right, top-to-bottom flow style is to sort of hack it in with lists. To my knowledge, the built-in controls do not directly support it.
First add a couple of columns to the query output to assign row and column numbers to each data row. (Change the order by clause as appropriate)
ceiling(row_number() over (order by AddressField) / 2.0) RowNumber
(row_number() over (order by AddressField) + 1) % 2 + 1 ColumnNumber
Now add a list to the report. Group by the RowNumber field. Within that list, add two more lists side by side. They will use the same dataset as the parent list. These will represent the cells. The left 'cell' will be a list with a filter ColumnNumber = 1. The right 'cell' will be a list with filter ColumnNumber = 2.
Now add textboxes within each 'cell' to contain the address data and format them as you desire.

SSRS Count Rows of Previous Group (Table in Matrix)

Using the sample below, I am looking for a way how to count the number of rows in the table in the previous group. My report is setup using a Matrix and a table ("Tablix3") in the data region of the matrix.
The column groupings are called "DayOfTheWeek" and "AMPM".
In the area with the blue box around it, I need the PM group to count the number of rows in "Tablix3" for the AM group on that day, which is 2. When the value is greater than 1 I will use expressions to alter the background colour accordingly as the bottom right pink background shouldn't be there.
I am using SSRS 2008.
Unfortunately, no. You have to do it in the query.

Resources