• The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
Menu
  • The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
  • Multiformat SQL Data Sets

    April 30, 2008 Hey, Ted

    DDS-defined logical files can have multiple record formats, each one of them coming from different physical files of different types of data. I would like to do the same sort of thing in SQL. That is, I want to retrieve all the records from one file followed by all the records from a second file, grouped by one or more common key fields. This is not a join, and it doesn’t seem like a union either, because the two data sets are so different. Am I trying to do the impossible?

    –David

    What you’re doing may be unusual, but it’s not unrealistic. You’re right that you don’t need a join. Despite the difference in the two types of data, you need a union. Since both tables have columns that have no counterpart in the other one, you’ll need to include nulls or default values as placeholders. I can explain this with a simple example.

    Let’s say that we have a table of items that customers have ordered from us.

    create table orders
       (Order  dec(5),          
        Item   char(4),         
        Qty    dec(3))     
         
    insert into orders values
      (201, 'A946',  5),       
      (203, 'B212',  7),       
      (207, 'A104', 12),       
      (210, 'B212',  4),       
      (211, 'B212',  4)        
    

    We have another table that shows where items are stored in the warehouse.

    create table inventory
       (Item      char(4),         
        Location  char(5),         
        Qty       dec(3))          
    
    insert into inventory values
       ('A104', '1103B', 20),     
       ('A104', '1412B',  6),     
       ('A726', '0902A',  4),     
       ('B212', '0312C',  8),     
       ('B212', '0404B',  8),     
       ('B212', '0411C',  6)      
    

    Here’s how we might combine the data into one set.

    select ord.item, 'A' as ID,                
           ord.order, ord.qty as OrdQty,       
           cast(null as char(5)) as Loc,       
           cast(null as dec(3)) as LocQty      
      from orders as ord
    union all
    select inv.item, 'B', cast(null as dec(5)),
           cast(null as dec(3)),               
           inv.location, inv.qty               
      from inventory as inv                  
    order by 1,2,3,5
    

    Now take a look at the result, and then I’ll explain the query in a bit more detail.

    ITEM  ID   ORDER   ORDQTY  LOC    LOCQTY
    ====  ==   =====   ======  =====  ======
    A104  A      207       12  -          -
    A104  B        -        -  1103B     20 
    A104  B        -        -  1412B      6 
    A726  B        -        -  0902A      4 
    A946  A      201       5   -          -
    B212  A      203       7   -          -
    B212  A      210       4   -          -
    B212  A      211       4   -          -
    B212  B        -       -   0312C      8 
    B212  B        -       -   0404B      8 
    B212  B        -       -   0411C      6
    

    The first SELECT (shown below) retrieves order information. Notice that the location and location quantity columns are left null, since they don’t exist in the orders. Also notice that I have forced an “A” into the second column, in order to sort the data and also to identify the row as an order row.

    select ord.item, 'A' as ID,                
           ord.order, ord.qty as OrdQty,       
           cast(null as char(5)) as Loc,       
           cast(null as dec(3)) as LocQty      
      from orders as ord                     
    

    The second SELECT retrieves inventory information. Notice that the order fields are loaded with nulls.

    select inv.item, 'B', cast(null as dec(5)),
           cast(null as dec(3)),               
           inv.location, inv.qty               
      from inventory as inv                  
    

    The second column identifies each type of record and aids in sorting the data properly. I forced an “A” into order records and a “B” into inventory records. If I were to embed this statement in an RPG program, for example, my program could use this field to identify the type of data in a row.

    If you don’t want to deal with nulls, you can use blanks and zeros instead, as the following query illustrates.

    select ord.item, 'A' as ID,           
           ord.order, ord.qty as OrdQty,  
           ' ' as Loc,                    
           0 as LocQty                    
      from orders as ord                
    union all                             
    select inv.item, 'B', 0, 0,           
           inv.location, inv.qty          
      from inventory as inv             
    order by 1,2,3,5
    
    ITEM  ID   ORDER   ORDQTY   LOC   LOCQTY
    ====  ==   =====   ======  =====  ======
    A104  A      207       12              0
    A104  B        0        0  1103B      20
    A104  B        0        0  1412B       6
    A726  B        0        0  0902A       4
    A946  A      201        5              0
    B212  A      203        7              0
    B212  A      210        4              0
    B212  A      211        4              0
    B212  B        0        0  0312C       8
    B212  B        0        0  0404B       8
    B212  B        0        0  0411C       6
    

    –Ted



                         Post this story to del.icio.us
                   Post this story to Digg
        Post this story to Slashdot

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Tags:

    Sponsored by
    DRV Tech

    Get More Out of Your IBM i

    With soaring costs, operational data is more critical than ever. IBM shops need faster, easier ways to distribute IBM applications-based data to users more efficiently, no matter where they are.

    The Problem:

    For Users, IBM Data Can Be Difficult to Get To

    IBM Applications generate reports as spooled files, originally designed to be printed. Often those reports are packed together with so much data it makes them difficult to read. Add to that hardcopy is a pain to distribute. User-friendly formats like Excel and PDF are better, offering sorting, searching, and easy portability but getting IBM reports into these formats can be tricky without the right tools.

    The Solution:

    IBM i Reports can easily be converted to easy to read and share formats like Excel and PDF and Delivered by Email

    Converting IBM i, iSeries, and AS400 reports into Excel and PDF is now a lot easier with SpoolFlex software by DRV Tech.  If you or your users are still doing this manually, think how much time is wasted dragging and reformatting to make a report readable. How much time would be saved if they were automatically formatted correctly and delivered to one or multiple recipients.

    SpoolFlex converts spooled files to Excel and PDF, automatically emailing them, and saving copies to network shared folders. SpoolFlex converts complex reports to Excel, removing unwanted headers, splitting large reports out for individual recipients, and delivering to users whether they are at the office or working from home.

    Watch our 2-minute video and see DRV’s powerful SpoolFlex software can solve your file conversion challenges.

    Watch Video

    DRV Tech

    www.drvtech.com

    866.378.3366

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Sponsored Links

    ARCAD Software:  Register now for May 21 Practical Test Automation Webinar
    LANSA:  It's Time for 4 days of education at the LANSA User Conference, May 4 – 7, in Orlando
    Vision Solutions:  A Rewind Button for i5 Data? Read the Whitepaper

    IT Jungle Store Top Book Picks

    Easy Steps to Internet Programming for AS/400, iSeries, and System i: List Price, $49.95
    Getting Started with PHP for i5/OS: List Price, $59.95
    The System i RPG & RPG IV Tutorial and Lab Exercises: List Price, $59.95
    The System i Pocket RPG & RPG IV Guide: List Price, $69.95
    The iSeries Pocket Database Guide: List Price, $59.00
    The iSeries Pocket Developers' Guide: List Price, $59.00
    The iSeries Pocket SQL Guide: List Price, $59.00
    The iSeries Pocket Query Guide: List Price, $49.00
    The iSeries Pocket WebFacing Primer: List Price, $39.00
    Migrating to WebSphere Express for iSeries: List Price, $49.00
    iSeries Express Web Implementer's Guide: List Price, $59.00
    Getting Started with WebSphere Development Studio for iSeries: List Price, $79.95
    Getting Started With WebSphere Development Studio Client for iSeries: List Price, $89.00
    Getting Started with WebSphere Express for iSeries: List Price, $49.00
    WebFacing Application Design and Development Guide: List Price, $55.00
    Can the AS/400 Survive IBM?: List Price, $49.00
    The All-Everything Machine: List Price, $29.95
    Chip Wars: List Price, $29.95

    Decline In Vulnerabilities Belies Threat Increase, Microsoft Says in New Security Report IBM Previews “Blue Business” SMB System Sales Approach

    Leave a Reply Cancel reply

Volume 8, Number 17 -- April 30, 2008
THIS ISSUE SPONSORED BY:

ProData Computer Services
WorksRight Software
Guild Companies

Table of Contents

  • Multiformat SQL Data Sets
  • Build Pivot Tables over DB2 Data
  • Solve a Client Access Mystery, Win a No Prize

Content archive

  • The Four Hundred
  • Four Hundred Stuff
  • Four Hundred Guru

Recent Posts

  • The Turning Point For Power Systems Is Here, And Now
  • How IBM i Users Can Compete In The Digital Era With Composable Commerce
  • IBM Streamlines Data Migration With New Partition Mirror Tech
  • Profound Logic Adds MCP To IBM i AI Tool
  • IBM i PTF Guide, Volume 27, Number 29
  • Power11 Entry Machines: The Power S1124 And Power L1124
  • BRMS Isn’t The Only Backup Product With A Security Problem
  • Guru: A Faster Way To Sign A JWT
  • Maxis Adds IBM i Support To Database Modernization Tool
  • IBM i PTF Guide, Volume 27, Number 28

Subscribe

To get news from IT Jungle sent to your inbox every week, subscribe to our newsletter.

Pages

  • About Us
  • Contact
  • Contributors
  • Four Hundred Monitor
  • IBM i PTF Guide
  • Media Kit
  • Subscribe

Search

Copyright © 2025 IT Jungle