Was ist wenn es mehrere Adressen gibt?
Wie soll er sich dann verhalten?
Aber wenn es nur eine Adresse gibt, könntest du es auch ggf. so lösen:


Code:
SELECT *
FROM JSON_TABLE(
    (Select line from table(qsys2.ifs_read_utf8('/test/so3.json')) fetch first row only),  
'$'
COLUMNS (
        VOUCHERTYPE     VARCHAR(10) PATH'$.vouchertype',
        VOUCHERNO       VARCHAR(20) PATH'$.voucherno',
        WAREHOUSENO     VARCHAR(10) PATH'$.warehouseno',
        SUPPLIERNO      VARCHAR(15) PATH'$.supplier.supplierno',
        NAME1           VARCHAR(50) PATH'$.supplier.name1',
        EMAIL           VARCHAR(50) PATH'$.supplier.email',
        PHONE           VARCHAR(30) PATH'$.supplier.phone',    
NESTED '$.supplier.address[*]'
COLUMNS (
          STREET          VARCHAR(50) PATH'$.street',
          ZIPCODE         VARCHAR(10) PATH'$.zipcode',
          CITY            VARCHAR(50) PATH'$.city',
          ADDRESSTYPE     VARCHAR(10) PATH'$.addresstype',
          COUNTRYCODETYPE VARCHAR(10) PATH'$.countrycodetype',
          COUNTRYCODE     VARCHAR(5)  PATH'$.countrycode'
        ),

NESTED '$.lineitems[*]'
COLUMNS (
            SKU             VARCHAR(50) PATH'$.sku',
            LINEITEMNO      VARCHAR(10) PATH'$.lineitemno',
            ARTICLENAME     VARCHAR(100) PATH'$.articlename',
            ORDEREDQUANTITY DECIMAL(10,2) PATH'$.orderedquantity',

NESTED '$.productcodes[*]'
COLUMNS (
                PRODUCTCODETYPE VARCHAR(10) PATH'$.type',
                PRODUCTCODE     VARCHAR(50) PATH'$.value'
            )
        )
    )
);