首页 > 解决方案 > 子查询连接

问题描述

我对 SQL 还是有点陌生​​;请放过我。我在尝试将表或其他视图加入到下面的现有查询时遇到问题。

我问的最后一个问题是指加入两个子查询并给它们一个别名以便加入工作(我仍然不明白的东西?)我正在尝试将一个表和另一个子查询加入到下面的查询中。但我不太确定如何继续向其中添加子查询。

我真的不明白别名如何允许子查询加入,如果我添加另一个子查询,那么我会添加另一个别名?

您能提供的任何帮助将不胜感激。提前为格式化道歉:/

Select 
    Sub4.DT as Date, Sub2.USOH, Sub2.USOHP, Sub2.OVXH, Sub2.OVXHP, Sub4.USOPP, Sub4.OVXPP 
From
    (Select 
         * 
     From
         (Select 
              x.ID, x.Date, x.USOH, x.OVXH, convert(varchar, x.Date, 1) AS DT,
              Abs(Cast((((x.USOH / NullIf((y.USOH), 0)) - 1) * 100) AS Decimal(10, 2))) AS USOHP2,
              Format(Abs(((x.USOH / NullIf((y.USOH), 0))) - 1), 'P') AS USOHP,
              Abs(Cast((((x.OVXH / NullIf((y.OVXH), 0)) - 1) * 100) AS Decimal(10, 2))) AS OVXHP2,
              Format(Abs(((x.OVXH / NullIf((y.OVXH),0)))-1),'P') AS OVXHP
          From  
              (Select 
                   a.Date as aDate, Max(b.Date) As aPrevDate 
               From 
                   MACDHistogram A 
               Inner Join 
                   MACDHistogram b on a.Date > b.Date 
               Group By a.Date) Sub1 -- Group Date > Previous Date SUB1
          Inner Join 
              MACDHistogram x on Sub1.aDate = x.Date
          Inner Join 
              MACDHistogram y on Sub1.aPrevDate = y.Date) T2) Sub2 --Histogram Percent SubQuery SUB2
Inner Join
    (Select 
         * 
     From
         (Select 
              z.ID, z.ID2, z.Date, z.USO as USOP, z.OVX as OVXP, 
              convert(varchar, z.Date, 1) as DT,
              Cast(((z.USO / NullIf((q.USO),0)- 1) * 100) as Decimal(10,2)) AS USOPP2,
              Format(((z.USO / NullIf((q.USO),0))-1),'P') AS USOPP,
              Cast(((z.OVX / NullIf((q.OVX),0)- 1) * 100) as Decimal(10,2)) AS OVXPP2,
              Format(((z.OVX / NullIf((q.OVX),0))-1),'P') AS OVXPP
          From  
              (Select 
                   c.Date as cDate, Max(d.Date) As cPrevDate 
               From 
                   Prices C 
               Inner Join 
                   Prices d on c.Date > d.Date Group By c.Date) Sub3 -- Group Date > Previous Date SUB3
          Inner Join 
              Prices z on Sub3.cDate = z.Date
          Inner Join 
              Prices q on Sub3.cPrevDate = q.Date) T4) Sub4  -- Price Percent Subquery SUB4
              On Sub2.Date = Sub4.Date
Order By 
    sub4.Date Desc

标签: joinsubqueryleft-joinalias

解决方案


推荐阅读