【问题标题】:SSRS DataSet different fields dependant on parameterSSRS DataSet 不同字段依赖于参数
【发布时间】:2014-03-26 07:50:47
【问题描述】:

我正在使用存储过程为我的 SSRS 报告提供数据集。在我的存储过程中有一个名为@ReportType 的参数。我使用它是因为我有两个报告使用相同的数据子集,但是它们根据 @ReportType 返回不同的列,并且在一个报告类型中我汇总了数据。

所以例如我的存储过程的结尾如下:

---Income
IF @Rpt_Type = 'Income'
    BEGIN

        SELECT  
                EXPENSE_TYPE    
            ,   ACCOUNT_NAME            
            ,   CURRENCY                
            ,   SETTLEMENT_DATE         
            ,   ISSUE           
            ,   ISSUE_DESCRIPTION       
            ,   SETTLEMENT_AMOUNT       
            ,   TRANSACTION_STATUS      
            ,   TRANSACTION_CATEGORY    
            ,   TRANSACTION_SUBCATEGORY
            ,   TRANSACTION_DESCRIPTION
        FROM #RESULT_SET 
        WHERE TRANSACTION_CATEGORY IN ('IN','IF') OR (TRANSACTION_CATEGORY IN ('CD','CW') AND TRANSACTION_SUBCATEGORY IN ('INT','SLI','RDS','INS','INC'))
        ORDER BY expense_type,settlement_date,issue_description
    END

---Expenses
IF @Rpt_Type = 'Expenses'
    BEGIN
        BEGIN
        SELECT 
                ACCOUNT_NAME            AS [Portfolio_Number]
            ,   TRANSACTION_SUBCATEGORY AS [Cash_flow_type]
            ,   TRANSACTION_DESCRIPTION AS [Cash_Flow_Description]
            ,   COUNT(ACCOUNT_NAME)     AS [Number Of Transactions]
            ,   @ReportEndDate          AS [EndDate]
        FROM #RESULT_SET 
        WHERE TRANSACTION_SUBCATEGORY IN ('CCD','CCW','FSB','FSS','FFB','FFS','FSO','FSC','FFO','FFC')
          AND INQ_BASIS_NUM = '1'
        GROUP BY ACCOUNT_NAME,TRANSACTION_SUBCATEGORY,TRANSACTION_DESCRIPTION,TRANSACTION_CATEGORY
        ORDER BY ACCOUNT_NAME,TRANSACTION_SUBCATEGORY,TRANSACTION_DESCRIPTION,TRANSACTION_CATEGORY
    END

我的问题是如何让 SSRS 返回每种报告类型的不同列?在将列返回到 SSRS 供我使用之前,有没有一种方法可以创建可以提供参数的数据集?我是否必须在 SSRS 中创建两个数据集来满足所需的不同列?

【问题讨论】:

    标签: tsql reporting-services ssrs-2008


    【解决方案1】:

    只要您为每个@Rpt_Type 返回相同的列名,这将起作用。对于 @Rpt_Type 'Income',为 @Rpt_Type 'Expenses' 数据返回 NULL 值,反之亦然。否则,报表将期望它不是从数据集中获取的列,并且数据集将失败:

    ---Income
    IF @Rpt_Type = 'Income'
        BEGIN
    
            SELECT  
                    EXPENSE_TYPE    
                ,   ACCOUNT_NAME            
                ,   CURRENCY                
                ,   SETTLEMENT_DATE         
                ,   ISSUE           
                ,   ISSUE_DESCRIPTION       
                ,   SETTLEMENT_AMOUNT       
                ,   TRANSACTION_STATUS      
                ,   TRANSACTION_CATEGORY    
                ,   TRANSACTION_SUBCATEGORY
                ,   TRANSACTION_DESCRIPTION
                ,   NULL Portfolio_Number
                ,   NULL Cash_flow_type
                ,   NULL Cash_Flow_Description
                ,   NULL [Number Of Transactions]
                ,   NULL EndDate
            FROM #RESULT_SET 
            WHERE TRANSACTION_CATEGORY IN ('IN','IF') OR (TRANSACTION_CATEGORY IN ('CD','CW') AND TRANSACTION_SUBCATEGORY IN ('INT','SLI','RDS','INS','INC'))
            ORDER BY expense_type,settlement_date,issue_description
        END
    
    ---Expenses
    IF @Rpt_Type = 'Expenses'
        BEGIN
            BEGIN
            SELECT  NULL EXPENSE_TYPE    
                ,   NULL ACCOUNT_NAME            
                ,   NULL CURRENCY                
                ,   NULL SETTLEMENT_DATE         
                ,   NULL ISSUE           
                ,   NULL ISSUE_DESCRIPTION       
                ,   NULL SETTLEMENT_AMOUNT       
                ,   NULL TRANSACTION_STATUS      
                ,   NULL TRANSACTION_CATEGORY    
                ,   NULL TRANSACTION_SUBCATEGORY
                ,   NULL TRANSACTION_DESCRIPTION
                ,   ACCOUNT_NAME            AS [Portfolio_Number]
                ,   TRANSACTION_SUBCATEGORY AS [Cash_flow_type]
                ,   TRANSACTION_DESCRIPTION AS [Cash_Flow_Description]
                ,   COUNT(ACCOUNT_NAME)     AS [Number Of Transactions]
                ,   @ReportEndDate          AS [EndDate]
            FROM #RESULT_SET 
            WHERE TRANSACTION_SUBCATEGORY IN ('CCD','CCW','FSB','FSS','FFB','FFS','FSO','FSC','FFO','FFC')
              AND INQ_BASIS_NUM = '1'
            GROUP BY ACCOUNT_NAME,TRANSACTION_SUBCATEGORY,TRANSACTION_DESCRIPTION,TRANSACTION_CATEGORY
            ORDER BY ACCOUNT_NAME,TRANSACTION_SUBCATEGORY,TRANSACTION_DESCRIPTION,TRANSACTION_CATEGORY
        END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多