MySQL Union:结果列并排

时间:2012-12-05 22:31:28

标签: mysql sql union

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

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

QUERY 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 )

QUERY 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 )

1 个答案:

答案 0 :(得分: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有更多行。当然你可以先计算,但这将是复杂的查询。

我不确定加入您的查询,可能基于年份?你知道的更好。