Если таблица возвращает 0 строк, затем выберите другой запрос

#sql #sql-server #sql-server-2014

#sql #sql-сервер #sql-server-2014

Вопрос:

Поскольку мой запрос иногда возвращает 0 строк, мне нужно выбрать другой оператор, если он возвращает 0 строк.

 select MR.NAME as NAMES,Isnull(cast(sum(MTTR/Month(getdate())) as decimal(18,2)),0) as YTDCURRENTYEAR from #Meantimeresult as MR 
 where YEAR(CONVERT(DATE, '01-'   Month)) = YEAR(GETDATE()) AND MONTH(CONVERT(DATE, '01-'   Month)) <= MONTH(GETDATE()) 
    group by MR.NAMES
  

2-й оператор

 Select NAME='' ,YTDCURRENTYEAR=0
  

Комментарии:

1. Если ваш запрос выполняется каким-либо кодом (c #, vb, f #, java и т.д.), Такого рода задача может быть выполнена кодом гораздо более простым способом.

2. @Srikanth . . . Вы должны предоставить образцы данных, желаемые результаты и объяснение логики. Вероятно, есть более простой способ написать логику.

Ответ №1:

 IF NOT EXISTS (YOUR FIRST QUERY)
   BEGIN
      YOUR SECOND QUERY
   END
  

Ответ №2:

Вы можете обернуть свой первый запрос общим табличным выражением и использовать объединение всех:

 WITH CTE AS
(
    SELECT MR.NAME as NAMES, Isnull(cast(sum(MTTR/Month(getdate())) as decimal(18,2)),0) as YTDCURRENTYEAR 
    FROM #Meantimeresult as MR 
    WHERE YEAR(CONVERT(DATE, '01-'   Month)) = YEAR(GETDATE()) 
    AND MONTH(CONVERT(DATE, '01-'   Month)) <= MONTH(GETDATE()) 
    GROUP BY MR.NAMES
)

SELECT Names, YTDCURRENTYEAR
FROM CTE
UNION ALL
SELECT NAME='' ,YTDCURRENTYEAR=0
WHERE NOT EXISTS(
    SELECT 1 
    FROM CTE
)