0

UNION によって結合される 2 つの SELECT ステートメントがあります。すべての結果を 1 つの行から次の行に順番に積み重ねる代わりに、2 番目の SELECT ステートメントの結果/列を 1 番目の SELECT ステートメントの結果/列の NEXT に追加したいと思います。

以下に 2 つのクエリを示しますが、簡単なフィードバックで十分でしょう。

クエリ 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 に答える