Вопрос:

SQL Как включить и исключить значения NULL в предложении where

sql-server reporting-services

116 просмотра

1 ответ

346 Репутация автора

У меня есть @AgentGroupпараметр в моем SSRS, который использует SP.

То, что я хочу сделать, - если параметр передает значение, PREPB_STRSTR,NULLон также будет отображать нулевые значения. Я думал о добавлении OR @AgentGroup is nullв мое предложение where, но что, если параметр только передает значение, PREPB_STRSTRон также отображает нулевые данные.

DECLARE @DateTo date = '3/21/2017',
@DateFrom date = '3/21/2017',
@VHGroup nvarchar(max) = 'PREPB_STRSTR,NULL'


  SELECT 
  [AgentIRACGroup]
  ,[CallOutCallID]
  ,[CallOutDateTime]
  ,[OutboundDuration]
  ,[CallOutNumber]
  ,[AgentName]
  ,[CallOutAgentID]
  ,[AgentGroup]
  ,[Outcome]
  ,[TalkTime]
   FROM [AgentStatisticsEOD].[dbo].[IRAC_Data]
   WHERE CONVERT(Date,[SCBCallDateTimeRequest]) BETWEEN @DateFrom AND @DateTo 
   AND [AgentGroup] collate database_default in (SELECT value from dbo.FnSplit(@VHGroup,',')) OR [AgentGroup] is null

Мой запрос всегда будет отображать нулевое значение, [AgentGroup]даже если @Agentgroupне проходит нулевое значение.

Автор: Vian Ojeda Garcia Источник Размещён: 25.04.2017 07:16

Ответы (1)


2 плюса

62116 Репутация автора

Решение

Самый простой способ решить эту проблему - добавить еще одно условие, чтобы проверить, действительно ли параметр содержит слово NULL:

DECLARE @DateTo date = '3/21/2017',
@DateFrom date = '3/21/2017',
@VHGroup nvarchar(max) = 'PREPB_STRSTR,NULL'


SELECT 
[AgentIRACGroup]
,[CallOutCallID]
,[CallOutDateTime]
,[OutboundDuration]
,[CallOutNumber]
,[AgentName]
,[CallOutAgentID]
,[AgentGroup]
,[Outcome]
,[TalkTime]
 FROM [AgentStatisticsEOD].[dbo].[IRAC_Data]
 WHERE CONVERT(Date,[SCBCallDateTimeRequest]) BETWEEN @DateFrom AND @DateTo 
 AND [AgentGroup] collate database_default in (SELECT value from dbo.Split(@VHGroup,',')) 
 OR 
 (',' + @VHGroup +',' LIKE '%,NULL,%' 
  AND [AgentGroup] is null
 )
Автор: Zohar Peled Размещён: 25.04.2017 07:22
Вопросы из категории :
32x32