У меня такой запрос:
SELECT AVG( [ DC ]. [ ContractedAmount ]) AS [AverageContractedAmount]
, MAX([DC].[ContractedAmount]) AS [MaxContractedAmount]
, MIN([DC].[ContractedAmount]) AS [MinContractedAmount]
FROM [DesignCustomer] AS [DC]
INNER JOIN [Design] AS [D] ON [DC].[DesignKey] = [D].[DesignKey]
INNER JOIN [Task] AS [T] ON [D].[DesignKey] = [t].[DesignKey]
INNER JOIN [ProjectDesign] AS [PD] ON [D].[DesignKey] = [PD].[DesignKey]
INNER JOIN [Project] AS [P] ON [PD].[ProjectKey] = [P].[ProjectKey]
INNER JOIN [Address] AS [A] ON [A].[AddressGuid] = [P].[ProjectGuid]
WHERE [DC].[ContractedAmount] != 0.00
AND [D].StatusKey = 66
AND (@MinWoodStories IS NULL OR [P].[WoodStories] BETWEEN @MinWoodStories AND @MaxWoodStories)
AND (@MinNumberOfUnits IS NULL OR [P].[NumberOfUnits] BETWEEN @MinNumberOfUnits AND @MaxNumberOfUnits)
AND (@MinSqrFootage IS NULL OR [P].[SquareFootage] BETWEEN @MinSqrFootage AND @MaxSqrFootage)
AND (@MinNumberOfSegs IS NULL OR [P].[Bldg_Segs] BETWEEN @MinNumberOfSegs AND @MaxNumberOfSegs)
AND ([DC].[CustomerKey] = @CustomerKey
OR [A].[RegionKey] = @RegionKey
OR [A].[StateKey] = @StateKey)
Как вы можете видеть в моем последнем предложении AND
, у меня есть "RegionKey = @RegionKey"
AND ([DC].[CustomerKey] = @CustomerKey
OR [A].[RegionKey] = @RegionKey
OR [A].[StateKey] = @StateKey)
В некоторых случаях я могу получить @RegionKey = 0, который не существует в качестве регистра в моей базе данных. Случай 0 в моем коде означает «Все», поэтому я хочу знать, как я могу изменить этот запрос, чтобы получить 0 в параметре @RegioKey, просто удалив фильтр regionKey. Как мне этого добиться?