[英]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.