Удалить фильтр в зависимости от полученного значения параметра - PullRequest
0 голосов
/ 12 сентября 2018

У меня такой запрос:

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. Как мне этого добиться?

1 Ответ

0 голосов
/ 12 сентября 2018
AND ([DC].[CustomerKey] = @CustomerKey
                      OR [A].[RegionKey] = @RegionKey OR @RegionKey = 0
                      OR [A].[StateKey] = @StateKey)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...