I have the following tables in a relationship I’ve tried to draw below.  The 
OrgChart table is a closure table to display the hierarchy of the organisation. 
 The Organisation is 3 Levels deep. 
  
 |--------------|  
 |Guidance   | 
 |_________| 
     |                                                   
     |                                                           
     m                  
 |-----------------|                  |-------------------|
 |Assignment   |   ------m  |Organisation    |
 |___________|                 ---------------------
     |                                              |     |
     |                                              m   m
     |                                         |------------|
     |                                         |OrgChart|
     m                                       |------------|
 |--------------|
 |Review       |
 |_________|
  
 When a guidance is issued it is assigned to all levels of the organisation for 
review.  The lowest level (level 3 tier) reviews it and this is recorded in the 
review table.  The Level 2 tier signs off the review when all the level 3 tiers 
under it has reviewed the guidance and so on.  What I’d like to do is to write 
a query (or series of queries)  so I can list the last review of each level in 
the organisation through the hierarchy.
  
 Guidance ref_num|  Date last reviewed|   Dept Name
 100                        | 5/5/16                     | Dept A
 100                        | 1/4/16                     | Dept AA
 100                        | 1/3/16                     | Dept AAA   
 100                        | 5/5/16                     | Dept A
 100                        | 1/2/16                     | Dept AA2
 100                        | 3/3/16                     | Dept AAA2
  
 Etc.
  
 The idea is to later scan the table to produce a report as below
  
 Ref_num | Level1 _ Dept | level 1_Review | Level2_Dept | Level2_Review | 
Level3_Dept  | Level3_Review
 100          | Dept A            | 5/5/16               |Dept AA         
|1/4/16                 | Dept AAA      |1/3/16
 100          | Dept A            | 5/5/16               |Dept AA2       
|1/2/16                | Dept AAA2    |3/3/16
  
  
 I'd be grateful for any help.  Here is the full definition of the tables:
 

 CREATE TABLE ASSIGNMENT (
     ASSID         DOM_INTLARGE NOT NULL /* DOM_INTLARGE = BIGINT */,
     VERID         DOM_INTLARGE NOT NULL /* DOM_INTLARGE = BIGINT */,
     ORGID         DOM_INTLARGE NOT NULL /* DOM_INTLARGE = BIGINT */,
     ASSIGNED_DTE  DOM_DATE NOT NULL /* DOM_DATE = DATE */,
     EMPID         DOM_INTLARGE /* DOM_INTLARGE = BIGINT */,
     STEID         DOM_INTSMALL /* DOM_INTSMALL = SMALLINT */
 
 );
 

 CREATE TABLE GUIDANCE (
     GDLID    DOM_INTLARGE NOT NULL /* DOM_INTLARGE = BIGINT */,
     VERID   DOM_INTLARGE NOT NULL /* DOM_INTLARGE = BIGINT */,
     REF_NUM  DOM_VARCHARSMALL NOT NULL /* DOM_VARCHARSMALL = VARCHAR(15) */,


     CAPTION  DOM_VARCHARLARGE NOT NULL /* DOM_VARCHARLARGE = VARCHAR(225) */,
     LINK     DOM_VARCHARLARGE /* DOM_VARCHARLARGE = VARCHAR(225) */,
     GTYCAT   DOM_INTSMALL NOT NULL /* DOM_INTSMALL = SMALLINT */
 );
 


 CREATE TABLE ORGANISATION (
     ORGID      DOM_INTLARGE NOT NULL /* DOM_INTLARGE = BIGINT */,
     ORG_NME    DOM_VARCHARMEDIUM NOT NULL /* DOM_VARCHARMEDIUM = VARCHAR(30) 
*/,
     LEVEL_NUM  DOM_INTSMALL NOT NULL /* DOM_INTSMALL = SMALLINT */,
     PARENT     DOM_INTLARGE /* DOM_INTLARGE = BIGINT */,
     INUSE      DOM_BOOL /* DOM_BOOL = CHAR(1) CHECK (value is NULL or (value 
between 0 and 1)) */
 
 );
 

 CREATE TABLE ORGCHART (
     OCHID               DOM_INTLARGE NOT NULL /* DOM_INTLARGE = BIGINT */,
     PARENTID            DOM_INTLARGE NOT NULL /* DOM_INTLARGE = BIGINT */,
     CHILDID             DOM_INTLARGE NOT NULL /* DOM_INTLARGE = BIGINT */,
     DEPTH               DOM_INTSMALL NOT NULL /* DOM_INTSMALL = SMALLINT */,
     ORGANISATION_ORGID  DOM_INTLARGE /* DOM_INTLARGE = BIGINT */
 );
 

 

 CREATE TABLE REVIEW (
     REVID       DOM_INTLARGE NOT NULL /* DOM_INTLARGE = BIGINT */,
     ASSID       DOM_INTLARGE NOT NULL /* DOM_INTLARGE = BIGINT */,
     REVIEW_DTE  DOM_DATE NOT NULL /* DOM_DATE = DATE */,
     GOTID       DOM_INTSMALL NOT NULL /* DOM_INTSMALL = SMALLINT */,
     NOTE        BLOB SUB_TYPE 0 SEGMENT SIZE 80,
     EMPID       DOM_INTLARGE /* DOM_INTLARGE = BIGINT */
 );
 


 


 

Reply via email to