Я посмотрел вокруг и нашел разные подходы к этой проблеме, но ни один из них не работал в моей конкретной ситуации.Я написал хранимую процедуру, которую я использую для отчета SSRS, который учитывает необязательные параметры (в SSRS я указываю список доступных параметров вместе с опцией «All», где значение установлено в «= Nothing»).).Это работает для размещения нескольких необязательных параметров, когда, если ничего не выбрано, отображаются все записи ... кроме тех, которые имеют нулевые значения ProjectID.
Я хотел бы иметь возможность запускать хранимую процедуру и указывать «Null» для параметра @Project и отображать эти значения с пустыми полями ProjectID, а в идеале добавить параметр «None» в мои SSRS.отчет по этому параметру, который также показывает эти значения.
Я не совсем уверен, как изменить SP для достижения этой цели:
ALTER PROCEDURE [dbo].[TasksByStatus]
@Status AS Integer = NULL,
@Project AS Integer = NULL
AS
BEGIN
SELECT Task, CONVERT(VARCHAR, StartDate, 101) AS StartDate,
(CASE WHEN CompleteDate IS NULL THEN 'Not complete yet'
ELSE CONVERT(VARCHAR, CompleteDate, 101) END) AS CompleteDate,
(CASE WHEN Notes IS NULL THEN 'No notes provided' ELSE Notes END) AS Notes,
ProjectName, StatusName
FROM Tasks
INNER JOIN Status ON Tasks.StatusID = Status.ID
LEFT JOIN Projects ON Tasks.ProjectID = Projects.ID
AND Projects.ID IS NULL
WHERE Status.ID = ISNULL(@Status, Status.ID)
AND Projects.ID = ISNULL(@Project, Projects.ID)
ORDER BY StartDate, StatusName
END
Результаты запроса без указания параметров:
![Results of query without specifying parameters](https://i.stack.imgur.com/HHY1z.jpg)
Я намерен при указании NULL для @Project видеть только одну запись со значением NULL ProjectID.
Изменить, чтобы уточнить
Для OP, пожалуйстамы знаем, какими должны быть точные результаты для каждой строки в данной таблице.Кроме того, когда вы упоминаете «None», как бы вы хотели передать это хранимой процедуре? (переменная @Project определяется как целое число)
Parameter Projects.ID In Result
-----------------------------------------
1 1 Yes
1 2 No
1 NULL No
'None' 1 No
'None' 2 No
'None' NULL Yes
NULL 1 Yes
NULL 2 Yes
NULL NULL Yes