[英]SSRS DataSet different fields dependant on parameter
I am supplying a dataset to my SSRS report using a stored proc. 我正在使用存储的proc向我的SSRS报告提供数据集。 Within my stored proc is a parameter called @ReportType. 在我存储的过程中有一个名为@ReportType的参数。 I use this as I have two reports which use the same subset of data however they return different columns based on the @ReportType and in one the report types I aggregate the data. 我之所以使用它,是因为我有两个使用相同数据子集的报告,但是它们基于@ReportType返回不同的列,在一个报告中,我汇总了数据。
So for example the end of my stored proc is as follows: 因此,例如,我存储的过程的结尾如下:
---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
My question is how can I get SSRS to return the different columns for each report type? 我的问题是如何让SSRS为每种报告类型返回不同的列? Is there a way in how I create the dataset that I can give the parameter before the columns are returned into SSRS for me to use? 在将列返回到SSRS中供我使用之前,如何创建可以提供参数的数据集的方法? Will I have to create two datasets in SSRS to cater for the different columns required? 我是否必须在SSRS中创建两个数据集来满足所需的不同列?
This will work so long as you return the same column names for each @Rpt_Type. 只要您为每个@Rpt_Type返回相同的列名,这将起作用。 For @Rpt_Type 'Income', return NULL values for the @Rpt_Type 'Expenses' data, and vice versa. 对于@Rpt_Type'收入',请为@Rpt_Type'费用'数据返回NULL值,反之亦然。 Otherwise, the report will expect columns that it isn't getting from the dataset and the dataset will fail: 否则,报告将期望它不是从数据集中获取的列,并且数据集将失败:
---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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.