我如何在SSRS中看到一个月的标题

时间:2017-05-01 14:22:17

标签: reporting-services

即使没有可用的数据,我也需要知道如何在表格中保持一个月的标题一整年。例如,当我选择全年的所有项目时,我有这个表:

|Name    |Jan  |Feb  |Mar  |Apr  |May  |Jun  |Jul  |Aug  |Sep  |Oct  |Nov  |Dec  |
|Bike    |     |     |     |     |     |     |102  |500  |450  |250  |754  |125  |
|Glove   |154  |625  |245  |200  |147  |365  |248  |784  |987  |145  |204  |321  |

但是当我只选择一个像(Bike)这样的项目时,结果如下:

|Name    |Jul  |Aug  |Sep  |Oct  |Nov  |Dec 
|Bike    |102  |500  |450  |250  |754  |125 

我需要查看整个表,即使月份数据为空

|Name    |Jan  |Feb  |Mar  |Apr  |May  |Jun  |Jul  |Aug  |Sep  |Oct  |Nov  |Dec  |
|Bike    |     |     |     |     |     |     |102  |500  |450  |250  |754  |125 

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

在数据集查询中,您需要创建一个包含所有月份名称的集合。然后将左边的连接设置为现有数据集。

Select [columns]
From MonthNames as MN
left join Sales as S
on MN.MonthName = S.MonthName

没有数据的月份仍会有记录,但该值将为NULL。确保您使用的是MonthName集中的月份名称字段,而不是Sales集。这将确保您每个月至少有一条记录,即使该月没有销售。

我无法分辨你所有专栏的来源,所以我不得不做出一些假设。将来,在每列前面使用表别名会很有帮助。

试试这个:

SELECT  Name,
        UnitPrice,
        Q1.MONTH,
        Q1.MONTH2
FROM    TEST.dbo.MonthList AS Q1
  LEFT JOIN
        ( SELECT    *,
                    YEAR(ModifiedDate) AS YEAR
          FROM  AdventureWorks2012.Sales.SalesOrderDetail AS Q2
            INNER JOIN AdventureWorks2012.Production.Product AS Q3
              ON Q2.ProductID = Q3.ProductID
          WHERE YEAR(ModifiedDate) = @YEAR
                AND Name IN ( @NAME )
        ) AS Q
    ON Q1.MONTH2 = MONTH(Q.ModifiedDate)
WHERE   Q1.MONTH IN ( @MONTH );

简化版

Select [columns]
From MonthNames as MN
left join (select [columns] from Products Inner join Sales ON ... WHERE [Product & Sales filters]) as S
on MN.MonthName = S.MonthName