我想加入两张桌子。
一个表具有以下结构: ID1,ID2,类型,出生日期,性别
其中ID2是唯一的,但相同的ID1可能有两个不同的ID2 - 这个表中有两行。
我想要做的是,将这些值添加到另一个表但是对于ID1有两个ID2,我不想要有两行但添加另一列如type2,birth date2,sex2并仅为不唯一的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
但这不起作用。
你可以帮帮我吗?答案 0 :(得分:0)
语法错误:
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
答案 1 :(得分:0)
如果您知道任何特定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()。