Reporting services SSMS参数具有多个值,包括空值,但即使未选中,结果中也始终包含空值

Reporting services SSMS参数具有多个值,包括空值,但即使未选中,结果中也始终包含空值,reporting-services,parameters,ssms,isnull,multiple-value,Reporting Services,Parameters,Ssms,Isnull,Multiple Value,我正在尝试使用文件注释类型的参数构建SSRS报告。结果集有带文件注释的行和不带文件注释的行,因此我希望用户能够选择所有文件注释类型、一种或多种类型,或者没有文件注释的案例 我使用了ISNULL,并在null的参数中包含了一个项目,即“-” 无论我在报告中选择什么,我总是看到空行。i、 e.如果我选择“文件注释类型”“账单注释”,那么我将获得账单注释行和空行。我怀疑我把ISNULL放错地方了,但这是比我习惯的更高级的编码,如果能得到一些帮助,我将不胜感激。 我认为这可能是SSRS的问题,所以我在S

我正在尝试使用文件注释类型的参数构建SSRS报告。结果集有带文件注释的行和不带文件注释的行,因此我希望用户能够选择所有文件注释类型、一种或多种类型,或者没有文件注释的案例

我使用了ISNULL,并在null的参数中包含了一个项目,即“-”

无论我在报告中选择什么,我总是看到空行。i、 e.如果我选择“文件注释类型”“账单注释”,那么我将获得账单注释行和空行。我怀疑我把ISNULL放错地方了,但这是比我习惯的更高级的编码,如果能得到一些帮助,我将不胜感激。 我认为这可能是SSRS的问题,所以我在SSMS中测试了它,发现了同样的问题。为了测试的目的,我已经声明了一个文件注释类型'SF',但问题仍然是我通过参数在SSRS中声明或选择的类型

非常感谢

DECLARE @FNOTE nvarchar(10) = 'SF';
DECLARE @REPDATE date = '20200318';


SELECT DISTINCT
[dbo].[CR_RefMaster].[RefCode] AS [MF_Code],
STUFF(
        (
            SELECT ', '+'('+[dbo].[CR_FileNotes].[CatDesc]+') '+'['+[dbo].[CR_FileNotes].[AdminAssignName]+'] '+[dbo].[CR_FileNotes].[Index]+' - '+[dbo].[CR_FileNotes].[Note] AS [text()]
            FROM [dbo].[CR_FileNotes]
            WHERE [dbo].[CR_FileNotes].[EntCode] = [dbo].[CR_RefMaster].[RefCode] AND ISNULL([dbo].[CR_FileNotes].[Category],'-') IN (@FNOTE) 
            ORDER BY [dbo].[CR_FileNotes].[Index]
            For XML PATH(''),type
            ).value('.', 'varchar(max)')
        , 1, 2, '') AS [File_Notes]

FROM
[dbo].[B_InvList]
LEFT OUTER JOIN
(SELECT
[dbo].[BR_InvReceipts].[ProformaNr] AS [ProformaNr],
(SUM([dbo].[BR_InvReceipts].[BaseAmount]-[dbo].[BR_InvReceipts].[ChargesBase]+[dbo].[BR_InvReceipts].[WriteOffBase]-[dbo].[BR_InvReceipts].[ExchangeDif])) AS [PaidTotal]
FROM
[dbo].[BR_InvReceipts]
WHERE
(CONVERT(date,[dbo].[BR_InvReceipts].[DateVoucher])) <= @REPDATE
GROUP BY
[dbo].[BR_InvReceipts].[ProformaNr]
) AS [Receipts] ON [dbo].[B_InvList].[ProformaNr] = [Receipts].[ProformaNr]
INNER JOIN [dbo].[CR_RefMaster] ON [dbo].[B_InvList].[RefCode] = [dbo].[CR_RefMaster].[RefCode]
WHERE
(CONVERT(date,[dbo].[B_InvList].[DateInvoice])) <= @REPDATE
AND 
([dbo].[B_InvList].[InvoiceBase] - (ISNULL([Receipts].[PaidTotal],0)) <> 0)


/*FILENOTE LOOKUP*/
SELECT
'-' AS [Value],
'-' AS [Label]
UNION
SELECT DISTINCT
[dbo].[LookValues].[Name] AS [Value],
[dbo].[LookValues].[Name] AS [Label]
FROM
[dbo].[LookValues]
WHERE
[dbo].[LookValues].[TabCode] = 'MEMT'
AND [dbo].[LookValues].[InUse] = '1'
ORDER BY [Label] 
以下是一个结果示例:

如果不知道所有的表结构和一些示例数据,就很难发现问题所在。看了它看起来还不错。。。虽然这无法解决代码现在无法工作的原因,但您可以尝试从内部内容中移动where子句,并将其与日期检查一起移动,例如,`and ISNULL[File_Notes],'-'在@FNOTE`谢谢,我已经通过编辑原始帖子的方式包含了一小段结果。如果我把ISNULL移到东西之外,我也需要加入那个表,我相信?我试过了,但没有乐趣。我也不知道在那个场景中我是需要内部连接还是外部连接!谢谢。我认为您不需要更改任何联接,只需在[dbo].[B_InvList].[InvoiceBase].[ISNULL[Receipts].[PaidTotal],0 0无效列名“File_Notes”.@FNOTE中添加并在[dbo].[B_InvList].[InvoiceBase].[ISNULL[Receipts].[PaidTotal],0,“-”,早上我再看一看,现在是晚上10:20。