Pular para o conteúdo
#107307
Avatar de rmanrman
Participante

    @antognolli

    Só por curiosidade, onde será aplicado isso?

    Montei o cenário desta forma:


    CREATE TABLE NUMEROS(
    ID NUMBER
    ,NUMERO NUMBER
    );

    ALTER TABLE NUMEROS ADD CONSTRAINT PK_NUMEROS PRIMARY KEY(ID);

    ALTER TABLE NUMEROS MODIFY NUMERO CONSTRAINT NN_NUMEROS_NUMERO NOT NULL;


    INSERT INTO NUMEROS(ID,NUMERO) VALUES(1,1);
    INSERT INTO NUMEROS(ID,NUMERO) VALUES(2,2);
    INSERT INTO NUMEROS(ID,NUMERO) VALUES(3,3);
    INSERT INTO NUMEROS(ID,NUMERO) VALUES(4,4);
    INSERT INTO NUMEROS(ID,NUMERO) VALUES(5,5);
    INSERT INTO NUMEROS(ID,NUMERO) VALUES(6,6);
    INSERT INTO NUMEROS(ID,NUMERO) VALUES(7,7);
    INSERT INTO NUMEROS(ID,NUMERO) VALUES(8,8);

    COMMIT;


    SELECT N1.NUMERO X1,N2.NUMERO X2,N3.NUMERO X3,N4.NUMERO X4,N5.NUMERO X5,N6.NUMERO X6,N7.NUMERO X7,N8.NUMERO X8
    FROM NUMEROS N1
    LEFT JOIN NUMEROS N2 ON N2.NUMERO > N1.NUMERO
    LEFT JOIN NUMEROS N3 ON N3.NUMERO > N2.NUMERO
    LEFT JOIN NUMEROS N4 ON N4.NUMERO > N3.NUMERO
    LEFT JOIN NUMEROS N5 ON N5.NUMERO > N4.NUMERO
    LEFT JOIN NUMEROS N6 ON N6.NUMERO > N5.NUMERO
    LEFT JOIN NUMEROS N7 ON N7.NUMERO > N6.NUMERO
    LEFT JOIN NUMEROS N8 ON N8.NUMERO > N7.NUMERO
    WHERE N1.NUMERO+N2.NUMERO+N3.NUMERO+N4.NUMERO+N5.NUMERO+N6.NUMERO+N7.NUMERO+N8.NUMERO = 12

    UNION

    SELECT N1.NUMERO,N2.NUMERO,N3.NUMERO,N4.NUMERO,N5.NUMERO,N6.NUMERO,N7.NUMERO,NULL
    FROM NUMEROS N1
    LEFT JOIN NUMEROS N2 ON N2.NUMERO > N1.NUMERO
    LEFT JOIN NUMEROS N3 ON N3.NUMERO > N2.NUMERO
    LEFT JOIN NUMEROS N4 ON N4.NUMERO > N3.NUMERO
    LEFT JOIN NUMEROS N5 ON N5.NUMERO > N4.NUMERO
    LEFT JOIN NUMEROS N6 ON N6.NUMERO > N5.NUMERO
    LEFT JOIN NUMEROS N7 ON N7.NUMERO > N6.NUMERO
    WHERE N1.NUMERO+N2.NUMERO+N3.NUMERO+N4.NUMERO+N5.NUMERO+N6.NUMERO+N7.NUMERO = 12

    UNION

    SELECT N1.NUMERO,N2.NUMERO,N3.NUMERO,N4.NUMERO,N5.NUMERO,N6.NUMERO,NULL,NULL
    FROM NUMEROS N1
    LEFT JOIN NUMEROS N2 ON N2.NUMERO > N1.NUMERO
    LEFT JOIN NUMEROS N3 ON N3.NUMERO > N2.NUMERO
    LEFT JOIN NUMEROS N4 ON N4.NUMERO > N3.NUMERO
    LEFT JOIN NUMEROS N5 ON N5.NUMERO > N4.NUMERO
    LEFT JOIN NUMEROS N6 ON N6.NUMERO > N5.NUMERO
    LEFT JOIN NUMEROS N7 ON N7.NUMERO > N6.NUMERO
    WHERE N1.NUMERO+N2.NUMERO+N3.NUMERO+N4.NUMERO+N5.NUMERO+N6.NUMERO = 12

    UNION

    SELECT N1.NUMERO,N2.NUMERO,N3.NUMERO,N4.NUMERO,N5.NUMERO,NULL,NULL,NULL
    FROM NUMEROS N1
    LEFT JOIN NUMEROS N2 ON N2.NUMERO > N1.NUMERO
    LEFT JOIN NUMEROS N3 ON N3.NUMERO > N2.NUMERO
    LEFT JOIN NUMEROS N4 ON N4.NUMERO > N3.NUMERO
    LEFT JOIN NUMEROS N5 ON N5.NUMERO > N4.NUMERO
    WHERE N1.NUMERO+N2.NUMERO+N3.NUMERO+N4.NUMERO+N5.NUMERO = 12

    UNION

    SELECT N1.NUMERO,N2.NUMERO,N3.NUMERO,N4.NUMERO,NULL,NULL,NULL,NULL
    FROM NUMEROS N1
    LEFT JOIN NUMEROS N2 ON N2.NUMERO > N1.NUMERO
    LEFT JOIN NUMEROS N3 ON N3.NUMERO > N2.NUMERO
    LEFT JOIN NUMEROS N4 ON N4.NUMERO > N3.NUMERO
    WHERE N1.NUMERO+N2.NUMERO+N3.NUMERO+N4.NUMERO = 12

    UNION

    SELECT N1.NUMERO,N2.NUMERO,N3.NUMERO,NULL,NULL,NULL,NULL,NULL
    FROM NUMEROS N1
    LEFT JOIN NUMEROS N2 ON N2.NUMERO > N1.NUMERO
    LEFT JOIN NUMEROS N3 ON N3.NUMERO > N2.NUMERO
    WHERE N1.NUMERO+N2.NUMERO+N3.NUMERO = 12

    UNION

    SELECT N1.NUMERO,N2.NUMERO,NULL,NULL,NULL,NULL,NULL,NULL
    FROM NUMEROS N1
    LEFT JOIN NUMEROS N2 ON N2.NUMERO > N1.NUMERO
    WHERE N1.NUMERO+N2.NUMERO = 12

    ORDER BY 1,2,3,4,5,6,7,8

    A combinação de numeros de 1 a 8 que somados resultam em 12 são 10 :woohoo:

    Essa é a ideia. Para tornar isso dinamico, utilize monte o SELECT dinamicamente e execute com EXECUTE IMMEDIATE do PL/SQL

    plugins premium WordPress