次の入力 XML があります。
<?xml version="1.0"?>
<Employees>
<Employee emplid="1111">
<lastname>Watson</lastname>
<age>30</age>
<email>johnwatson@sh.com</email>
</Employee>
<Employee emplid="2222">
<firstname>Sherlock</firstname>
<lastname>Holmes</lastname>
<age>32</age>
<email>sherlock@sh.com</email>
</Employee>
</Employees>
従業員のファーストネームが欠落していることに注意してください 1111
次の選択を実行しています:
select
c1.emplid,
fname,
lname
from(
select emplid, xmldata from employeeXML
LATERAL VIEW explode (xpath(xmldata,'/Employees/Employee/@emplid')) dummyTable as emplid )c1
LATERAL VIEW explode (xpath(xmldata,concat('/Employees/Employee[@id="',c1.emplid,'"',']/firstname/text()')))dummyTable2 as fname
LATERAL VIEW explode (xpath(xmldata,concat('/Employees/Employee[@id="',c1.emplid,'"',']/lastname/text()'))) dummyTable3
as lname;
期待される結果:
1111 NULL Watson
2222 Sherlock Holmes
欠落している名前の NULL 値に注意してください)
ただし、次の結果が得られます。
2222 シャーロック・ホームズ
従業員 1111 の名が見つからないため、クエリで最初の従業員が返されません。期待される結果に示されているように、両方の従業員データを取得する方法はありますか? 助けてください。ありがとう、