Result value indicates how many records you have to return the left join query SQL [closed]

1

Hello good day I want to ask the following question I want the result value will indicate how many records you have to return the query of the left join I have the query:

SELECT * FROM (
    SELECT '001' AS CLAVE2, 'MOV1' AS MOV
    UNION ALL
    SELECT '001' AS CLAVE2, 'MOV2' AS MOV
    UNION ALL
    SELECT '001' AS CLAVE2, 'MOV3' AS MOV
    UNION ALL
    SELECT '001' AS CLAVE2, 'MOV4' AS MOV
    UNION ALL
    SELECT '001' AS CLAVE2, 'MOV5' AS MOV
    UNION ALL
    SELECT '001' AS CLAVE2, 'MOV6' AS MOV) 
MOVIMIENTOS 
LEFT JOIN (
    SELECT  TABLA.CLAVE,(TABLA.A-TABLA.B) AS RESULTADO 
    FROM 
    (SELECT '001' AS CLAVE, 10 AS A ,8 AS B) TABLA
) TB1 ON TB1.CLAVE=MOVIMIENTOS.CLAVE2

and it brings me the following result:

001 MOV1    001 2
001 MOV2    001 2
001 MOV3    001 2
001 MOV4    001 2
001 MOV5    001 2
001 MOV6    001 2

If you look at the left join the result is 2 then according to that result I want you to bring the movements staying in the following form:

001 MOV1    001 2
001 MOV2    001 2

I hope you can help me please

SELECT * FROM
(SELECT *, ROW_NUMBER() OVER(Partition BY CLAVE ORDER BY CLAVE) AS X   FROM (
    SELECT '001' AS CLAVE2, 'MOV1' AS MOV
    UNION ALL
    SELECT '001' AS CLAVE2, 'MOV2' AS MOV
    UNION ALL
    SELECT '001' AS CLAVE2, 'MOV3' AS MOV
    UNION ALL
    SELECT '001' AS CLAVE2, 'MOV4' AS MOV
    UNION ALL
    SELECT '001' AS CLAVE2, 'MOV5' AS MOV
    UNION ALL
    SELECT '001' AS CLAVE2, 'MOV6' AS MOV
    UNION ALL
    SELECT '002' AS CLAVE2, 'MOV7' AS MOV
    UNION ALL
    SELECT '002' AS CLAVE2, 'MOV8' AS MOV
    UNION ALL
    SELECT '002' AS CLAVE2, 'MOV9' AS MOV
    UNION ALL
    SELECT '002' AS CLAVE2, 'MOV10' AS MOV
    UNION ALL
    SELECT '002' AS CLAVE2, 'MOV11' AS MOV
    UNION ALL
    SELECT '002' AS CLAVE2, 'MOV12' AS MOV
    UNION ALL
    SELECT '002' AS CLAVE2, 'MOV13' AS MOV
    UNION ALL
    SELECT '002' AS CLAVE2, 'MOV14' AS MOV
    UNION ALL
    SELECT '002' AS CLAVE2, 'MOV15' AS MOV
    UNION ALL
    SELECT '002' AS CLAVE2, 'MOV16' AS MOV
    UNION ALL
    SELECT '002' AS CLAVE2, 'MOV17' AS MOV
    UNION ALL
    SELECT '002' AS CLAVE2, 'MOV18' AS MOV) 
MOVIMIENTOS 
LEFT JOIN (
    SELECT  TABLA.CLAVE,(TABLA.A-TABLA.B) AS RESULTADO
    FROM 
    (SELECT '001' AS CLAVE, 10 AS A ,6 AS B UNION ALL
    SELECT '002' AS CLAVE, 5 AS A ,0 AS B ) TABLA
) TB1 ON TB1.CLAVE=MOVIMIENTOS.CLAVE2 
) test where X<=RESULTADO ORDER BY CLAVE2

I resolved it by doing the query as above if someone serves you forward if you have welcome improvements

    
asked by Javier Solis 01.12.2018 в 03:44
source

0 answers