Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MANUFACTURER
- ------------
- ID
- NAME
- CARS
- ---------
- CAR_ID
- MANUFACTURER_ID
- NAME
- PARTS
- ---------
- PART_ID
- CAR_ID
- PART_NAME
- FORD ESCORT Windshield Wiper
- Horn
- Steering Wheel
- F-150 Windshield Wiper
- Horn
- Bed Liner
- TOYOTA CAMRY Floor Mat
- Door Handle
- CIVIC Headlight
- Horn
- WITH manufacturer AS (
- SELECT 1 manufacturer_id, 'FORD' NAME FROM dual
- UNION ALL SELECT 2, 'TOYOTA' FROM dual)
- , CAR AS (
- SELECT 1 car_id, 1 manufacturer_id, 'ESCORT' AS name FROM dual
- UNION ALL SELECT 2, 1, 'F-150' FROM dual
- UNION ALL SELECT 3, 2, 'CAMRY' FROM dual
- UNION ALL SELECT 4, 2, 'CIVIC' FROM dual)
- , part AS (
- SELECT 1 AS part_id, 1 AS car_id, 'Windshield Wiper' AS part_name FROM dual
- UNION ALL SELECT 2, 1, 'Horn' FROM dual
- UNION ALL SELECT 3, 1, 'Steering Wheel' FROM dual
- UNION ALL SELECT 4, 2, 'Windshield Wiper' FROM dual
- UNION ALL SELECT 5, 2, 'Horn' FROM dual
- UNION ALL SELECT 6, 2, 'Bed Liner' FROM dual
- UNION ALL SELECT 7, 3, 'Floor Mat' FROM dual
- UNION ALL SELECT 8, 3, 'Door Handle' FROM dual
- UNION ALL SELECT 9, 4, 'Headlight' FROM dual
- UNION ALL SELECT 10, 4, 'Horn' FROM dual)
- SELECT case lag (m.name) over (order by p.part_id)
- when m.name then null
- else m.name
- end as manufcturer,
- case lag (c.name) over (order by p.part_id)
- when c.name then null
- else c.name
- end as carname,
- p.part_name
- FROM manufacturer m INNER JOIN car c ON m.manufacturer_id = c.manufacturer_id
- INNER JOIN part p ON p.car_id = c.car_ID
- ;
- MANUFACTURER CARNAME PART_NAME
- ------------- --------- -----------------
- FORD ESCORT Windshield Wiper
- Horn
- Steering Wheel
- F-150 Windshield Wiper
- Horn
- Bed Liner
- TOYOTA CAMRY Floor Mat
- Door Handle
- CIVIC Headlight
- Horn
- select m.name as manufacturer_name, c.name as car_name, p.name as part_name
- from manufacturer m join
- cars c
- on c.manufacturer_id = m.id join
- parts p
- on p.car_id = c.car_id;
- select (case when m_seqnum = 1 then manufacturer_name else '' end) as manufacturer_name,
- (case when c_seqnum = 1 then car_name else '' end) as car_name,
- part_name
- from (select m.name as manufacturer_name, c.name as car_name, p.name as part_name,
- row_number() over (partition by m.name order by c.name, p.name) as m_seqnum,
- row_number() over (partition by m.name, c.name order by p.name) as c_seqnum
- from manufacturer m join
- cars c
- on c.manufacturer_id = m.id join
- parts p
- on p.car_id = c.car_id
- ) mcp
- order by manufacturer_name, car_name, part_name;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement