2011-08-29 69 views
2

我想用另一个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
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] 
+0

是啊,这引起我惊讶地发现,如果INNER JOIN不起作用,WHERE子句也不行,但这是我的答案。 –