2015-04-20 1 views
0

quelqu'un peut me aider à obtenir Oracle 11g CONNECT AVANT ... COMMENCER équivalentOracle Migration Netezza - Se connecter avant ... COMMENCER équivalent en Netezza

SQL Netezza

Ci-dessous SQL ne fonctionne pas dans Netezza

CREATE TABLE Employees 

(

    empid int   NOT NULL, 

    mgrid int   NULL, 

    empname varchar(25) NOT NULL, 

    salary DECIMAL(12,2)  NOT NULL 

); 


INSERT INTO Employees VALUES(1 , NULL, 'Nancy' , 10000.00); 

INSERT INTO Employees VALUES(2 , 1 , 'Andrew' , 5000.00); 

INSERT INTO Employees VALUES(3 , 1 , 'Janet' , 5000.00); 

INSERT INTO Employees VALUES(4 , 1 , 'Margaret', 5000.00) ; 

INSERT INTO Employees VALUES(5 , 2 , 'Steven' , 2500.00); 

INSERT INTO Employees VALUES(6 , 2 , 'Michael' , 2500.00); 

INSERT INTO Employees VALUES(7 , 3 , 'Robert' , 2500.00); 

INSERT INTO Employees VALUES(8 , 3 , 'Laura' , 2500.00); 

INSERT INTO Employees VALUES(9 , 3 , 'Ann'  , 2500.00); 

INSERT INTO Employees VALUES(10, 4 , 'Ina'  , 2500.00); 

INSERT INTO Employees VALUES(11, 7 , 'David' , 2000.00); 

INSERT INTO Employees VALUES(12, 7 , 'Ron'  , 2000.00); 

INSERT INTO Employees VALUES(13, 7 , 'Dan'  , 2000.00); 

INSERT INTO Employees VALUES(14, 11 , 'James' , 1500.00); 


    insert into employees values (17, 12, 'Sai11', 4500.00); 

    insert into employees values (18, 12, 'SSV11', 4500.00); 


    insert into employees values (19, 13, 'SB11', 4500.00); 
    insert into employees values (20, 13, 'SB11', 4500.00); 


WITH EmpCTE(empid, empname, mgrid, lvl) 
AS 
( 

    -- Anchor Member (AM) 
    SELECT empid, empname, mgrid, 0 
    FROM Employees 
    WHERE empid = 7 
    UNION ALL 

    -- Recursive Member (RM) 
    SELECT E.empid, E.empname, E.mgrid, M.lvl+1 
    FROM Employees AS E 
    JOIN EmpCTE AS M 
     ON E.mgrid = M.empid 
) 
SELECT * FROM EmpCTE e order by e.empid 

Répondre

0

Je pense que tout ce que vous voulez faire est de supprimer les définitions des champs et non référence établie avec le jusqu'à ce qu'il soit défini.

WITH EmpCTE AS ( 
    -- Anchor Member (AM) 
    SELECT empid, empname, mgrid, 0 
    FROM Employees 
    WHERE empid = 7 
), EmpCTERecursive as (
    select * 
    from EmpCTE 
    union all 
    -- Recursive Member (RM) 
    SELECT E.empid, E.empname, E.mgrid, M.lvl+1 
    FROM Employees AS E 
    JOIN EmpCTE AS M 
    ON E.mgrid = M.empid 
) 
SELECT * FROM EmpCTERecursive e order by e.empid