从一个表中选择多个值并分配给第二个表值的SQL查询



我有三个表,想根据col6和col9的条件将表a的值赋给表b的并发值

Col1 col2 col3
A1    aa.  S1
B1.   Fh.  S1
C1.   Gs.  S2
D1.   Hh.  S1
A2.   Sg.  S2
C2.   Dh.  S2

表b

Col4 col5 col6
A1.   Aa.  P1
A2.   Ab.  P2
B1.   Aa.  P2
C1.   Ac.  P3
C2.   Ab.  P1
D1.   Ab.  P3

表c

Col7。col8。Col9I1。Aa。30I2。Ab。10I3。Ac。15预告。Ac。30I5。Ac。1016。Ab。I7。Ab。30I8。Ab。19。Ac。20一块。25

Aa。表a和表b对应的列分别为col1和col4,表b和表c对应的列分别为col5和col8。

我想给表a中的cola赋值,并将表c中的col7赋值Col6顺序和col9顺序

如果col6的值较小,col9的值较大,则应优先赋值,如(P1和30)。

大多数情况下,我们可以为一行分配2个值。如果填充了两个

,则可以在延续中赋值我希望输出为

O1       o4
A1.   I1, I10
A2.   I6,I8
B1.   
C1.   I4,I9
D1.   
C2.   I7, I2

等等

假设您正在使用SQL SERVER:

with Table_A_rn as (
select *,  ( row_number() over ( order by (select null) ) - 1 )  / 2 as rn
from Table_A
),
Table_B_rn as (
select *, row_number() over ( order by (select null) ) - 1 as rn
from Table_B
)
select b.Col4 AS Col1, STRING_AGG(a.Col1, ',') as Col4
from Table_A_rn a
inner join Table_B_rn b on a.rn = b.rn
group by b.Col4

结果:

Col1 |  Col4
------------
N1. A1,B1.
N2. C1.,D1.
N3. A2.,C2.

Table_A_rn将为使用公式(row_number - 1 / 2)的每两个成功记录创建相同的行号,创建的行号将从0开始。

Table_B_rn为Table_B创建从0开始的行号

演示

相关内容

  • 没有找到相关文章

最新更新