0

我有类似的东西:

Select1 ... 
        ,(fieldA - fieldB) AS Y, 
        ,(Select2 
                 (Select3 percent 
                    From ... 
                    Join.... 
                    Where ... 
                    Order by some_date 
                    Limit 1) AS X 
            From ... 
            Join... 
            Where ... 
            Order by some_date2 
            Limit 1) AS X
        ,(X * Y) AS output
  From ...
  Join ...
  Join ...
  • 是的,我将 Select 嵌套在 Select 内 Select 内 - 每个都使用上一层的值(如果没有外层,它们将无法工作!)
  • 使用选择是因为我需要在每个选择中的“最接近给定但不是较新的日期”之后进行过滤
  • 如您所见,我重复使用该嵌套 Select 中返回的结果两次
  • 现在我将嵌套的 Select 复制到我在上面的伪代码中写 X 的地方

一切都很好,直到我需要重用该嵌套选择返回的值。

如何在“输出”列的定义中重用 X 别名?

PS 不会过去的代码,因为它现在比 A4 还多!它按预期工作,但眼睛很难看。

4

1 回答 1

1

您可以再次使用另一个嵌套SELECT的 . 然后这个新的最外层SELECT可以访问XY

Select0
        ...
        ,(X * Y) AS output
    From (
        Select1 ... 
            ,(fieldA - fieldB) AS Y, 
            ,(Select2 
                     (Select3 percent 
                        From ... 
                        Join.... 
                        Where ... 
                        Order by some_date 
                        Limit 1) AS X 
                From ... 
                Join... 
                Where ... 
                Order by some_date2 
                Limit 1) AS X
      From ...
      Join ...
      Join ...) AS values
于 2015-04-15T17:24:40.530 回答