SQL选择值为(子查询)

时间:2015-11-11 16:16:04

标签: sql-server

这是我试图开始工作的查询,但我收到了语法错误。

SELECT Column1 as (SELECT Value2 from Table2 Where ConditionA, ConditionB, ConditionC) 
from Table1

我是自学成才,并且没有发现任何明确说明无法完成的事情,但如果是这样的话,那么感谢关闭。

2 个答案:

答案 0 :(得分:0)

您不能将子查询返回的值用于别名,也无法使其工作。

你唯一的选择是动态构建sql,并使用sp_executesql,但这通常表明其他方面出错了!

首先获得您想要的值,几点

  • 确保您只使用TOP 1或适当的过滤条件
  • 获得1个结果
  • 多个条件由ANDOR分隔,而不是逗号

    declare @alias NVARCHAR(100) -- whatever is appropriate
    SELECT TOP 1 @alias = value2 FROM Table2 
    WHERE someField = 'some value'
    

然后动态构建sql并执行它。

DECLARE @sql NVARCHAR(100) = 'SELECT Column1 AS ' + @alias + ' FROM Table1'
EXEC sp_executesql @sql

您可以在此处查看此操作:http://sqlfiddle.com/#!3/71f8d6/3

但是,我强调,这是一个糟糕的解决方案。

答案 1 :(得分:-2)

尝试

SELECT (SELECT Value2 from Table2 Where ConditionA, ConditionB, ConditionC) Column1 from Table1