Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 固定矩阵宽度_Reporting Services_Ssrs 2008 - Fatal编程技术网

Reporting services 固定矩阵宽度

Reporting services 固定矩阵宽度,reporting-services,ssrs-2008,Reporting Services,Ssrs 2008,在努力完成这一目标后,我的问题是: 在SSR2008中,我使用了一个矩阵,其中包含选定月份的列组。第一列是所选的第一个月,也是新表启动后的十二个月: Month | Mar11 May11 Apr11 Jun11 Jul11 Aug11 Sep11 Oct11 Nov11 Dec11 Jan12 Feb12 ------+------------------------------------------------------------------------ Cat.1 | 3

在努力完成这一目标后,我的问题是:

在SSR2008中,我使用了一个矩阵,其中包含选定月份的列组。第一列是所选的第一个月,也是新表启动后的十二个月:

Month | Mar11 May11 Apr11 Jun11 Jul11 Aug11 Sep11 Oct11 Nov11 Dec11 Jan12 Feb12
------+------------------------------------------------------------------------
Cat.1 |   3     4      5    7     8     9     1     3
Cat.2 |   4     2      3    6     1     3     2     5

Month | Mar12 May12 Apr12
------+------------------------------------------------------------------------
Cat.1 |   3     2     1
Cat.2 |   4     1     7
这就提供了一个整洁的表格,当表格“重复”(用一个大的行组模拟)时,表格将整齐地显示在整个宽度上。但是,如果只选择一个月,则布局太窄,看起来相当蹩脚:

Month | Mar
------+----
Cat.1 |  3

如何创建具有固定宽度(即12列宽度)的矩阵,而不考虑选择了多少个月?

有两种方法可以做到这一点:

使用不同的行和列分组值在查询中创建笛卡尔框架

SELECT
 C.MonthStarting
,R.Category
,D.InstanceCount

FROM ( -- column values
    SELECT DISTINCT MonthStarting
    FROM Calendar
    WHERE MonthStarting BETWEEN @StartDate AND @EndDate
) AS AS C

JOIN ( -- row values
    SELECT DISTINCT Category
    FROM SomeRelevantTables
) AS R
    ON 1 = 1 -- intentional cartesian product

LEFT JOIN (
    SELECT 
     Category
    ,MonthStarting
    ,COUNT(1) AS InstanceCount

    FROM SomeRelevantTables

    GROUP BY
         Category
        ,MonthStarting
) AS D
    ON C.MonthStarting = D.MonthStarting
    AND R.Category = D.Category
或者,您可以在查询中透视列而不是布局,并在表中而不是矩阵中显示数据

SELECT 
 T.Category
,SUM(CASE WHEN C.RowNumberAsc = 1 THEN 1 END) AS Column1
,SUM(CASE WHEN C.RowNumberAsc = 2 THEN 1 END) AS Column2
,SUM(CASE WHEN C.RowNumberAsc = 3 THEN 1 END) AS Column3
,SUM(CASE WHEN C.RowNumberAsc = 4 THEN 1 END) AS Column4

FROM SomeRelevantTables AS T

JOIN (
    SELECT
     C.*
    ,ROW_NUMBER()OVER(PARTITION BY MonthStarting) AS RowNumberAsc

    FROM (
        SELECT DISTINCT MonthStarting
        FROM Calendar
        WHERE MonthStarting BETWEEN @StartDate AND @EndDate
    ) AS C
) AS C
    ON T.MonthStarting = C.MonthStarting

GROUP BY
    T.Category