Добавьте пустую строку к результатам запроса, если никакие результаты не нашли

Очень простое решение.

  1. Войти с помощью системного администратора
  2. скопируйте файлы mdf и ldf в «C: \ Program Files (x86) \ Microsoft SQL Server \ MSSQL11 .MSSQLSERVER \ MSSQL \ DATA "Где все остальные файлы данных.
  3. Теперь прикрепите оттуда работу
22
задан OMG Ponies 29 July 2010 в 18:27
поделиться

3 ответа

Это старый вопрос, но у меня была такая же проблема. Решение действительно простое, БЕЗ двойного выбора:

select top(1) WITH TIES * FROM (
select
id, category, 1 as orderdummy
from #test
where category = @category
union select 0, '', 2) ORDER BY orderdummy

с помощью «С TIES» вы получаете ВСЕ строки (все имеют 1 как «orderdummy», так что все являются связями), или если результата нет, Вы получаете свою стандартную сумму.

12
ответ дан 29 November 2019 в 04:17
поделиться

Боюсь, вариантов очень мало.

Вы всегда должны касаться таблицы дважды, будь то COUNT, EXISTS до, EXIST в UNION, предложение TOP и т. Д.

select
    id, category
from mytable
where category = @category
union all --edit, of course it's quicker
select
    0, ''
where NOT EXISTS (SELECT * FROM mytable where category = @category)

Решение EXISTS лучше, чем COUNT, потому что оно остановится, когда найдет строку. COUNT будет проходить по всем строкам, чтобы фактически подсчитать их

29
ответ дан 29 November 2019 в 04:17
поделиться

Думаю, вы можете попробовать:

Declare @count int
set @count = 0

Begin
Select @count = Count([Column])
From //Your query

if(@Count = 0) 
   select 0
else //run your query

Недостаток в том, что вы выполняете запрос дважды, плюс в том, что вы пропускаете временную таблицу.

1
ответ дан 29 November 2019 в 04:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: