【发布时间】:2012-12-07 13:25:09
【问题描述】:
我正在使用 SSRS 进行报告并执行存储过程来为我的报告生成数据
DECLARE @return_value int
EXEC @return_value = [dbo].[MYREPORT]
@ComparePeriod = 'Daily',
@OverrideCompareDate = NULL,
@PortfolioId = '5,6',
@OverrideStartDate = NULL,
@NewPositionsOnly = NULL,
@SourceID = 13
SELECT 'Return Value' = @return_value
GO
在上面当我通过@PortfolioId = '5,6' 时,它给了我错误的输入
我需要portfolio id 5 and 6 also 的所有记录,这是发送多个值的正确方法吗?
当我执行报告时只给出@PortfolioId = '5' 它给了我 120 条记录
当我通过给 @PortfolioId = '6' 执行它时,它给了我 70 条记录
所以当我给 @PortfolioId = '5,6' 时,它应该只给我 190 条记录,但它给了我更多的记录,我不明白我到底哪里出错了。
谁能帮助我? 谢谢
所有代码太大无法粘贴,我正在粘贴相关代码,请提供线索。
CREATE PROCEDURE [dbo].[GENERATE_REPORT]
(
@ComparePeriod VARCHAR(10),
@OverrideCompareDate DATETIME,
@PortfolioId VARCHAR(50) = '2', --this must be multiple
@OverrideStartDate DATETIME = NULL,
@NewPositionsOnly BIT = 0,
@SourceID INT = NULL
) AS
BEGIN
SELECT
Position.Date,
Position.SecurityId,
Position.Level1Industry,
Position.MoodyFacilityRating,
Position.SPFacilityRating,
Position.CompositeFacilityRating,
Position.SecurityType,
Position.FacilityType,
Position.Position
FROM
Fireball_Reporting.dbo.Reporting_DailyNAV_Pricing POSITION WITH (NOLOCK, READUNCOMMITTED)
LEFT JOIN Fireball.dbo.AdditionalSecurityPrice ClosingPrice WITH (NOLOCK, READUNCOMMITTED) ON
ClosingPrice.SecurityID = Position.PricingSecurityID AND
ClosingPrice.Date = Position.Date AND
ClosingPrice.SecurityPriceSourceID = @SourceID AND
ClosingPrice.PortfolioID IN (
SELECT
PARAM
FROM
Fireball_Reporting.dbo.ParseMultiValuedParameter(@PortfolioId, ',') )
【问题讨论】:
-
您能否向我们展示存储过程的签名(您的参数是什么名称和数据类型),以及您如何在存储过程中使用该参数
@PortfolioId? -
嗨,marc_s 实际上我正在使用 SSRS 报告报告我有下拉列表,其中包含所有带有复选框的投资组合名称。我可以同时选择多个投资组合,所以如果我没记错的话,它将像这样传递到上述程序。那么为什么我得到更多的记录而不是添加 5 和 6 个投资组合
标签: sql sql-server ssrs-2008 reporting-services