同步选择投影

时间:2011-08-29 02:39:20

标签: sql sql-server tsql projection subquery

我想在另一个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]

在投影中有一个select语句,它试图使用表别名[P]。显然这不合法。如何在不使用两个单独查询的情况下实现目标?

实际上,我的查询是对任何拥有“爬行动物”类型的宠物的人说“显示'1”。

我正在使用SQL Server 2008。

1 个答案:

答案 0 :(得分:1)

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]