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