Scenario 5 Showing inventory for selected day if not selected then show last day inventory by month wise

Scenario 5:
Problem: Showing inventory for selected day, if not selected then show last day inventory by month wise.
See images below:
In the above image showing inventory for 15th of every month. Because user entered day as 15. suppose if user does not enter 15 and leave that as blank then it will show last day Inventory for every month. See below

Note: If you enter any thing apart from 1 to 31 then the report will become blank.


Step 1: Create parameter “Day” with data type as string. See blow image

Step 2: Drag Month, Day columns to row shelf and right click on Day parameter select show parameter control.

Step 3: Create a calculated field as “Max or selected day” using below formula.

If [Parameters].[Day]='' then window_Max(max([Day]))
Else int([Parameters].[Day])

Note: In above formula '' is not double quote it is two single quotes side by side with out space in between.

Formula working in this way, suppose parameter [Parameters].[Day] is empty means no value entered by user then it will find the max day of each month other wise it will return user entered day value. As we created parameter as string data type so we are converting that value to integer again in else statement.

Step 4: Drag this newly created calculated field “Max or selected day” to text marks shelf.

In above image you can observe that for month of February it showing max date as 31 which is wrong.
Because we used window_max it's calculating max day across table by default. Window_max is a table calculation.

Step 5: Now right click on “Max or selected day” which is there in text marks shelf and go to Compute using then select pane(down).

Now you will see max day for February as 28th.

Step 6: Create one more calculate field as “Max day filter” using following formula.

If attr(Day) = [Max or selected day] then "True"
Else "False"

Note: [Max or selected day] is an aggregated column which is created in step 3. [Day] is not an aggregated column. We cant mix aggregated and non aggregated columns in calculation. So I applied attr function for non aggregated [Day] column.

Step 7: Now drag [Max or selected day] column to filter shelf and select only “True”.

Step 8: Remove column “Max or selected day” from marks text shelf and add “Stock in Inventory” column to marks text shelf.

Finally the report looks like below. You test report with and without day value in parameter.

Please see the report below: