开发者

formulating an SSRS query to include zero/empty rows in a GROUP BY

开发者 https://www.devze.com 2023-04-10 00:57 出处:网络
I\'m working on a SSRS report and I\'m having an issue with my Plant name not showing when there is no data available for the date range selected.

I'm working on a SSRS report and I'm having an issue with my Plant name not showing when there is no data available for the date range selected.

The far left column, first row (technically the 2nd by the image) is where my plant name should appear at all times:

formulating an SSRS query to include zero/empty rows in a GROUP BY

formulating an SSRS query to include zero/empty rows in a GROUP BY

Essentially the first image showed just my blank rows/columns. The first column, first row is where my plant name should be at all times. The remaining columns are my returned data based on date selection.

The second image would show everything working as it should when there is data.

I'm grouping by PlantCode in SSRS which is what gives my my plant name. I don't know how to get the plant name to appear even if there is not data available.

Is this possible?

I THOUGHT I could use something like iif(salesvolume is NOTHING, [PlantCODE],[PlantCode])

Here is the database query for the report

SELECT
    PInv.[Plant_Numer],
    PInv.[Plant_Code],
    PInv.{Department_number],
    PInv.[Inventory_Volume],
    Pinv.[Inventory_Date],开发者_运维技巧 -- 'Last Inventory Date'
    pls.[Actual_Volume],
    pls.[Budget_Volume],
    ppf.[Good_Output_Product_Units] AS 'Production Volume', -- 'Next Day Production
    CASE 
        WHEN coalesce (pls.[Acutal_Volume],0) = 0 and coalesce (pls.[Actual_Sales_Dollars],0) = 0 THEN 0
        ELSE ((pls.[Actual_Sales_Dollars/pls.[Actual_Volume])) AS 'Average Price' -- 'Next Day Sales'
FROM
    [TrueOpportunity].[dbo].[Production_Fact] pf
    inner join [TrueOpportunity].[dbo].[Production_Process_Fact] ppf on ppf.production_number = pf.production_number
    inner join [TrueOpportunity].[dbo].[Process] prc on prc.process_number = pf.process_number
    inner join [TrueOpportunity].[dbo].[Department] dpt on dpt.department_number = prc.department_number
    inner join [WoodProduction_New].[dbo].[Plywood_Layup_Sales] pls on pls.procesS_number = pf.procesS_number
    inner join [WoodProduction_New].[dbo].[Process_Inventory] Pinv on PInv.[Inventory_Date] = pf.date 
        and pls.product_date = pf.date 
        and dpt.department_number = pinv.department_number
WHERE
    pf.date between @BeginningDate and @EndingDate


I think you want to change your query so that Process Inventory is your primary table and all other tables are LEFT JOINED to that table. That way the Plant Number & Code will show up regardless of whether there is matching data in the other tables.

This syntax is probably not completely correct, but I would start out by changing your FROM clause to look something like this:

FROM
    [WoodProduction_New].[dbo].[Process_Inventory] Pinv
    LEFT JOIN [TrueOpportunity].[dbo].[Production_Fact] pf 
        ON PInv.[Inventory_Date] = pf.date
    LEFT JOIN [TrueOpportunity].[dbo].[Production_Process_Fact] ppf 
        ON ppf.production_number = pf.production_number
    LEFT JOIN [TrueOpportunity].[dbo].[Process] prc 
        ON prc.process_number = pf.process_number
    LEFT JOIN [TrueOpportunity].[dbo].[Department] dpt 
        ON dpt.department_number = prc.department_number 
        AND dpt.department_number = pinv.department_number
    LEFT JOIN [WoodProduction_New].[dbo].[Plywood_Layup_Sales] pls 
        ON pls.process_number = pf.process_number 
        AND pls.product_date = pf.date 

Experiment with that and see if you can get it to display the data that you want.

0

精彩评论

暂无评论...
验证码 换一张
取 消