Sql 如果另一个子查询返回true\false,请选择子查询
正如标题所暗示的,我正在努力实现这样的目标Sql 如果另一个子查询返回true\false,请选择子查询,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,正如标题所暗示的,我正在努力实现这样的目标 SELECT (<sub query>) AS some_result, some_other_result = CASE WHEN some_result > 0 THEN (<another super heavy subquery>) ELSE NULL END FROM some_table +-----------------------------------------+ + some_res
SELECT
(<sub query>) AS some_result,
some_other_result = CASE WHEN some_result > 0 THEN (<another super heavy subquery>) ELSE NULL END
FROM some_table
+-----------------------------------------+
+ some_result + some_other_result +
+-----------------------------------------+
+ 0 + NULL +
+-----------------------------------------+
+ 6.7 + 3.182738998 +
+-----------------------------------------+
我之所以想这样做,是因为某些_结果并不经常出现,但当它出现时,会减慢我的查询速度
我有一个备份计划,它使用两个查询来实现相同的目标,但如果可能的话,我希望避免使用这种方法
谢谢您只能在较高级别使用某些结果,而不能在指定位置使用。比如:
select
a.*,
some_other_result =
CASE WHEN a.some_result > 0 THEN (<another super heavy
subquery>)
ELSE NULL END
from
(SELECT
(<sub query>) AS some_result
FROM some_table) a
使用派生表或cte。应从某些表中删除。@Serg我相信这只是作者提供的一个简化示例,如果同一select excluding sub_查询中有其他字段,则可能需要从某些表中删除该问题意味着返回一个标量值。否则原始查询将失败,但OP说它可以工作。@Serg我想你有点误解了我的意思,我的意思是可能需要从某个表中选择其他列以及某个结果。好的,可能是因为内部SELECT中缺少“*”。