【问题标题】:Dynamic table/output each month for report每月动态表/输出报表
【发布时间】:2017-01-30 16:44:09
【问题描述】:

我有一个需要创建的表格和报告,但我不知道如何思考如何让它每个月以正确的顺序显示输出。

使用 SQL Server 2012 和 SSRS 2016 作为输出,我需要创建一个滚动报告,显示过去 12 个月及其对应的值。每个月前 12 个月都会下降。

解决此类问题的最佳表格设计是什么?如何控制输出在前 12 个月下降并保持滚动?

所需输出的示例如下所示,但下个月我需要删除 Dec - 15 并添加 Jan - 16 但列按降序排序,因此上个月始终是报告中的最后一个月。

-- Desc     |   DEC - 15 |  Jan - 16 | Feb - 16 | restofmonths| Nov 16 | Dec 16|
********************************************************************************
-- Loss     |   1,000   |   2500    | 1700      | 123         |  4565  |  3433 | 
-- Expense  |   2,000   |   3200    | 900       | 456         |  1223  |  4445 |
-- Reserve  |   3,000   |   3300    | 400       | 789         |  4747  |  4444 |

【问题讨论】:

    标签: sql-server tsql database-design reporting-services


    【解决方案1】:

    你需要使用矩阵。

    在您的数据集中,添加 2 列(如果尚未存在)。第一个是列标题,第二个是列排序顺序。像这样的

        [Header] = LEFT(DATENAME(MONTH, DateValue), 3) + ' - ' + RIGHT(YearNum, 2)
    ,   [HeaderSort] = CONVERT(VARCHAR, YEAR(DateValue)) + RIGHT('0' + CONVERT(VARCHAR, DATEPART(MONTH, DateValue)), 2)
    

    将矩阵列组设置为您的 Header 值并将排序顺序设置为您的 HeaderSort 值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 2017-01-03
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多