如果另一个子查询返回true \ false,则选择子查询

时间:2017-09-08 06:59:20

标签: 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_result  +     some_other_result +
+-----------------------------------------+
+       0         +           NULL        +
+-----------------------------------------+
+       6.7       +       3.182738998     +
+-----------------------------------------+

我想这样做是因为some_result经常不会发生,但是当它发生时它会减慢我的查询速度。

我有一个使用2个查询的备份计划会实现相同的目标,但如果可能的话我想避免这种方法。

由于

1 个答案:

答案 0 :(得分:1)

您只能在上一级使用some_result,而不能在分配的位置使用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 。类似的东西:

ng new