Параметр SSMS с несколькими значениями, включая NULL, но NULL всегда включаются в результаты, даже если они не выбраны - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь создать отчет SSRS с параметром для типа примечания файла. В результирующем наборе есть строки с примечаниями к файлам и строки без примечаний к файлам, поэтому я хочу, чтобы пользователь мог выбрать все типы примечаний к файлам, один или несколько типов или случаи без примечаний к файлам.

I использовал ISNULL и включил в параметр для NULL элемент, который равен '-'

. Независимо от того, что я выбираю в своем отчете, я всегда вижу строки NULL. т.е.) Если я выберу Тип примечания к файлу "Billing Note", я получу строки примечания к счету и строки NULL . Я подозреваю, что поставил 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] 

Вот пример результатов: Пример результатов

...