我有两个由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 )
答案 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有更多行。当然你可以先计算,但这将是复杂的查询。
我不确定加入您的查询,可能基于年份?你知道的更好。