Как мне написать Xquery для ниже XML - PullRequest
0 голосов
/ 05 августа 2020
<root>
        <StatementDetail>  
                <PolicyNo>POL-01</PolicyNo>
                <name>john</name>
                <InstallmentNo>0</InstallmentNo>  
                <NetAmount>250.00</NetAmount>   
                <NetAmountTotal>250.00</>
                <AmountTotal>300.00</AmountTotal>
        </StatementDetail>
        <StatementDetail>  
                <PolicyNo>POL-01</PolicyNo>
                <name>john</name>  
                <InstallmentNo>1</InstallmentNo>  
                <NetAmount>50.00</NetAmount>  
                <NetAmountTotal>50.00</NetAmountTotal>
                <AmountTotal>300.00</AmountTotal>
        </StatementDetail>
        <StatementDetail>  
                <PolicyNo>POL-02</PolicyNo>
                <name>ravi</name>  
                <InstallmentNo>0</InstallmentNo>  
                <NetAmount>270.00</NetAmount>
                <NetAmountTotal>500.00</NetAmountTotal>
                <AmountTotal>500.00</AmountTotal>                       
        </StatementDetail>  
        <StatementDetail>  
                <PolicyNo>POL-02</PolicyNo>
                <name>ravi</name>
                <InstallmentNo>0</InstallmentNo>    
                <NetAmount>230.00</NetAmount>
                <NetAmountTotal>500.00</NetAmountTotal>
                <AmountTotal>500.00</AmountTotal>
        </StatementDetail>
        </root>
        };

Мой код:

  #xquery(for $x in /root/StatementDetail
  let $PolicyNo := fn:upper-case($x/PolicyNo)
  let $Name := $x/Name
  let $InstNo := $x/InstallmentNo
  let $NetAmt := $x/NetAmount
  let $NetAmtTot := $x/NetAmountTotal
  let $AmtTot := $x/AmountTotal
  return <AgencyStatementDetail>
                <PolicyNo>{$PolicyNo}</PolicyNo>
                <Name>{$Name}</Name>
                <InstallmentNo>{$InstNo}</InstallmentNo>
                <NetAmount>{$NetAmt}</NetAmount>
                <NetAmountTotal>{$NetAmtTot}</NetAmountTotal>
                <AmountTotal>{$AmtTot}</AmountTotal>
        </AgencyStatementDetail>)
        

Выходные данные имеют вид:

Policy      Name    InstNo  Amount
    
POL-01      John    0       250
                    Total   250
                    1        50
                    Total   50
Total POL-01                300
   
 POL-02      Ravi    0       270
                    Total   270
                     0       230
                    Total   500
Total POL-02                500
    

И требуемый выход: POL-02 Ravi 0270 0230 Всего 500 Всего POL-02 500

Я хочу, чтобы вывод был основан на instNo, он не должен повторяться снова, итого должно появиться только один раз. Как я сделаю это, чтобы получить такой вывод. Пожалуйста, помогите написать XQuery.

...