0

我有 2 个由 UNION 组合的 SELECT 语句。我不想将所有结果按顺序从一行堆叠到下一行,而是希望将第二个 SELECT 语句的结果/列添加到第一个 SELECT 语句的结果/列的旁边:

以下是两个查询,但简单的反馈可能就足够了。

查询 1

  select    
      LEFT(A.F_ANOTRIMESTRE, 4) Year_Max,

      RIGHT(A.F_ANOTRIMESTRE, 2) Quarter_Max,

      IF(RIGHT(A.F_ANOTRIMESTRE, 2)=03,'Enero a Marzo',
      IF(RIGHT(A.F_ANOTRIMESTRE, 2)=06,'Abril a Junio',
      IF(RIGHT(A.F_ANOTRIMESTRE, 2)=09,'Julio a Septiembre',
      IF(RIGHT(A.F_ANOTRIMESTRE, 2)=12,'Octubre a Diciembre',
      '')
      ))) Quarter_Name,

      ROUND(A.POR_RENTABILIDAD, 2) Quarterly_yield_Max

from      dr_rent_carteras_trimestres A
where     A.ID_CARTERA = @ID_CARTERA
And       A.IND_RENTABILIDAD = 1
And       LEFT(A.F_ANOTRIMESTRE, 4) = ( select    MAX(left(F_ANOTRIMESTRE, 4)) - 0
                              from      dr_rent_carteras_trimestres
                              where     ID_CARTERA = @ID_CARTERA )

查询 2

select    
      LEFT(A.F_ANOTRIMESTRE, 4) Year_Max_Less_One,

      RIGHT(A.F_ANOTRIMESTRE, 2) Quarter_Max_Less_One,

      IF(RIGHT(A.F_ANOTRIMESTRE, 2)=03,'Enero a Marzo',
      IF(RIGHT(A.F_ANOTRIMESTRE, 2)=06,'Abril a Junio',
      IF(RIGHT(A.F_ANOTRIMESTRE, 2)=09,'Julio a Septiembre',
      IF(RIGHT(A.F_ANOTRIMESTRE, 2)=12,'Octubre a Diciembre',
      '')
      ))) Quarter_Name,

      ROUND(A.POR_RENTABILIDAD, 2) Quarterly_yield_Max_Less_One

from      dr_rent_carteras_trimestres A
where     A.ID_CARTERA = @ID_CARTERA
And       A.IND_RENTABILIDAD = 1
And       LEFT(A.F_ANOTRIMESTRE, 4) = ( select    MAX(left(F_ANOTRIMESTRE, 4)) - 1
                              from      dr_rent_carteras_trimestres
                              where     ID_CARTERA = @ID_CARTERA )
4

1 回答 1

1

您可以将结果放在临时表中,添加序列列,然后按 id 列左/右连接表。

对此没有纯 sql 方式。在 mysql 中,你也可以这样做:

select tab1.a,tab1.b,tab1.c,tab2.a,tab2.b,tab2.c from 
 (SELECT @rowno:=@rowno+1 as id,a,b,c from tab1 where something) as tab1 left join
 (SELECT @rowno:=@rowno+1 as id,a,b,c from tab2 where something) as tab2 on tab2.id=tab1.id

但前提是您知道 tab1 有更多行。当然你可以先计算,但这将是复杂的查询。

我不确定是否加入您的查询,可能基于年份?你比较清楚。

于 2012-12-05T22:51:19.340 回答