簡體   English   中英

連接具有不同行數的表

[英]Joining tables with different amount of rows

我想加入兩個表。

一個表具有以下結構:ID1,ID2,類型,出生日期,性別

其中ID2是唯一的,但同一ID1可能具有兩個不同的ID2-因此此表中的兩行。

我想做的是,將這些值添加到具有兩個ID2的ID1的另一個表BUT中,我不希望有兩行,但添加另一列(如type2,best date2,sex2),並僅為那些不是ID1的ID1填充這些值獨特。

我嘗試過這樣的事情:

第一步,我已經將所有ID1添加到了type = 1的表中。 剩下幾個ID1,其中type = 2。 現在我想像這樣將它們添加到表中

create table VB_VT_hvgruppe_LV_PRV_VPVT_HILF as 
select 
    a . *,
    c.ns5_vptypid as ns5_vptypid2,
    c.ns5_gebdat as ns5_gebdat2,
    c.ns5_sex as ns5_sex2
from
    VB_VT_hvgruppe_LV_PRV_VPVT a
        join,
    (select 
        b.ns5_vpvt_ordinal, b.ns5_vptypid, b.ns5_gebdat, b.ns5_sex
    from
        lfglende.ns5_vpvt1 b
    where
        b.ns5_vptypid = '2') as c ON a.ns5_vb_ordinal = b.ns5_vpvt_ordinal
where
    a.ns5_vb_ordinal = c.ns5_vpvt_ordinal

但這沒有用。

你能幫我嗎?

您的語法有誤:

VB_VT_hvgruppe_LV_PRV_VPVT a join, (select 

不應該使用逗號-試試這個:

create table VB_VT_hvgruppe_LV_PRV_VPVT_HILF as 
select 
    a . *,
    c.ns5_vptypid as ns5_vptypid2,
    c.ns5_gebdat as ns5_gebdat2,
    c.ns5_sex as ns5_sex2
from
    VB_VT_hvgruppe_LV_PRV_VPVT a
        join
    (select 
        b.ns5_vpvt_ordinal, b.ns5_vptypid, b.ns5_gebdat, b.ns5_sex
    from
        lfglende.ns5_vpvt1 b
    where
        b.ns5_vptypid = '2') as c ON a.ns5_vb_ordinal = b.ns5_vpvt_ordinal
where
    a.ns5_vb_ordinal = c.ns5_vpvt_ordinal

如果您知道任何特定的ID1最多有兩個ID2值,則可以將表連接到自身,在“左側”獲得較低的值,在“右側”獲得較高的值。

select  T1.ID1, T1.ID2, T1.Type, T1.Birthdate, T1.sex
        T2.ID2 as T2ID2, T2.Type as TYPE2, T2.Birthdate as Birthdate2, T2.sex as sex2
from mytable t1
left join mytable t2
on t1.ID1=T2.ID1 and t1.ID2<t2.ID2

如果您不希望T2值中只有一個記錄,則在每個字段上使用COALESCE()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM