【问题标题】:Query to merge data according to address type根据地址类型查询合并数据
【发布时间】:2016-09-04 10:10:28
【问题描述】:

我有一个如下表A:

ID Name Age 
1  A     18 
2  B     19

这个表和地址表是一对多的映射关系。

ID ParentID AddressType ALine1 ALine2 State City Country
10        1 Mail        AAA    AAA    AAB   CCC  CDCD
11        1 Home        BBB    BBA    BAB   CAC  CFCF
12        2 Mail        CAV    VAC    CSC   DFS  DDDC   

我需要得到想要的输出:

Name Age Address1Type ALine1 ALine2 State1 City1 Country1 Address2Type A2Line1 A2Line2  State2 City2 Country2 
---- --- ------------ ------ ------ ------ ----- -------- ------------ ------- -------- ------ ----- --------
A     18 Mail         AAA    AAA    AAB    CCC   CDCD     Home         BBB     BBA      BAB    CAC   CFCF
B     19 Mail         CAV    VAC    CSC    DFS   DDDC     null         null    null     null   null  null

我可以将它们组合起来,但会获得同名的多条记录。我怎样才能得到我需要的输出?

【问题讨论】:

  • 你试过的SQL语句是什么?
  • 'merge' 是一种 DML 操作,用于在表中插入/更新数据;您真的是这个意思,还是您只是在查询并想要一个组合两个表中的数据的结果集?
  • 我只是在查询表,并且想要一个将两个表中的数据组合在一起的结果集。

标签: sql oracle oracle11g merge


【解决方案1】:

试试这个:

SELECT          parent.Name,
                parent.Age,
                mailInfo.*,
                homeInfo.*
FROM            parent
LEFT OUTER JOIN addresses AS mailInfo
             ON parent.ID = mailInfo.ParentID
            AND mailInfo.AddressType = 'Mail'
LEFT OUTER JOIN addresses AS homeInfo
             ON parent.ID = homeInfo.ParentID
            AND mailInfo.AddressType = 'Home';

【讨论】:

  • 当然,这只有在您只查找家庭地址和邮件地址时才有效
  • 非常感谢罗伯特,它确实有帮助!!
猜你喜欢
  • 1970-01-01
  • 2021-06-02
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 2020-08-13
  • 2015-04-06
  • 2020-06-21
  • 1970-01-01
相关资源
最近更新 更多