SQL Server: СУЩЕСТВУЕТ (ВЫБРАТЬ В) - PullRequest
0 голосов
/ 21 августа 2011

У меня 3 запроса.Если первый возвращает пустой набор, я выполняю второй запрос, и если он также возвращает пустой набор, я даю серверу последний шанс и делаю третий:

SELECT ... INTO #Query1
IF EXISTS(SELECT * FROM #Query1)
    SELECT * FROM #Query1
ELSE BEGIN
    SELECT ... INTO #Query2
IF EXISTS(SELECT * FROM #Query2)
    SELECT * FROM #Query2
ELSE BEGIN
    SELECT ...
    END
END

Это сработало хорошо, но яВы столкнулись с новой задачей - запрос должен использоваться как подзапрос, а также другие запросы, в пределах IF EXISTS([subquery]).При этом я вижу

Неверный синтаксис рядом с ключевым словом 'INTO'.

Как мне изменить исходный запрос для соответствия этому новому условию?

С уважением,

1 Ответ

1 голос
/ 21 августа 2011

Вы ищете что-то вроде этого:

create function dbo.Foo()
  returns @Result table ( ThingId Int, Source Int )
as
begin
  insert into @Result
    select ThingId, 1 as Source from Things1
  if @@ROWCOUNT = 0
    insert into @Result
      select ThingId, 2 as Source from Things2
  if @@ROWCOUNT = 0
    insert into @Result
      select ThingId, 3 as Source from Things3
  --...
  return
end
go
select * from dbo.Foo()
select 42 as 'The Answer' where exists ( select * from dbo.Foo() where Source > 9 )

Вы можете передавать параметры в функцию для использования в предложениях WHERE и т.п.Столбец Источник может быть опущен, если вам не важно знать, откуда берутся данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...