Синхронизировать выбранную проекцию - PullRequest
2 голосов
/ 29 августа 2011

Я хотел бы использовать псевдоним таблицы в проекции другого оператора select, например:

SELECT [ID]
      ,[Name]
      ,CASE WHEN 'reptile' IN 
      (SELECT [Type] FROM dbo.Pets [S] INNER JOIN [P] ON S.People_ID = P.ID) 
      THEN 1 ELSE 0 END [HasReptile]
  FROM People [P]

В проекции есть оператор выбора, который пытается использовать псевдоним таблицы [P]. Очевидно, это не законно. Как мне достичь своей цели, не используя два отдельных запроса?

По сути, мой запрос говорит: «покажите« 1 »для любого человека, которому принадлежит домашнее животное типа« рептилия ».

Я использую SQL Server 2008.

1 Ответ

1 голос
/ 29 августа 2011
SELECT [ID]
      ,[Name]
      ,CASE WHEN 'reptile' IN 
      (SELECT [Type] FROM dbo.Pets [S] WHERE S.People_ID = P.ID) 
      THEN 1 ELSE 0 END [HasReptile]
  FROM People [P]
...