none
Distinct en Update RRS feed

  • Pregunta

  • hola, ayuda por favor con el uso del distinct en esta consulta : 



    update PR1 set CLAVE_C = 'u' where RFC IN (SELECT RFC FROM PR1 WHERE CONCEPTO ='93'

    GROUP BY RFC HAVING COUNT (DISTINCT RFC) = 1)


    quiero actualizar la CLAVE_C solo a los RFC unicos que tengan CONCEPTO = 93
    en la tabla tengo 7 registros con concepto = 93 donde solo 3 son RFC unicos, la consulta mensionada me actualiza la clave_c en los 7 registros :(

    miércoles, 19 de abril de 2017 19:00

Respuestas

  • Trata:

    -- sentencia original corregida
    UPDATE PR1 
    SET CLAVE_C = 'u' 
    WHERE RFC IN (SELECT RFC FROM PR1 WHERE CONCEPTO ='93' GROUP BY RFC HAVING COUNT (*) = 1)
    AND CONCEPTO = '93';
    
    -- usando una CTE o tabla derivada
    WITH R AS (
    SELECT
    	RFC
    FROM
    	PR1
    WHERE
    	CONCEPTO ='93'
    GROUP BY
    	RFC
    HAVING
    	COUNT(*) = 1
    )
    UPDATE P
    SET P.CLAVE_C = 'u'
    FROM PR1 AS P INNER JOIN R ON P.RFC = R.RFC
    WHERE P.CONCEPTO ='93';
    GO

    Los RFC seran los unico pero siempre y cuando consideres solo ese concepto.

    Si te refieres a que el RFC pueda aparecer multiples veces pero solo con este concepto entonces trata:

    WITH R AS (
    SELECT
    	RFC
    FROM
    	PR1
    GROUP BY
    	RFC
    HAVING
    	MIN(CONCEPTO) = MAX(CONCEPTO)
    	AND MIN(CONCEPTO) = '93'
    )
    UPDATE P
    SET P.CLAVE_C = 'u'
    FROM PR1 AS P INNER JOIN R ON P.RFC = R.RFC
    ;
    GO


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas


    miércoles, 19 de abril de 2017 19:37

Todas las respuestas

  • Hola Aislet

    update PR1 set clave_c = 'u'
    where rfc in (select distinct rfc from pr1 where concepto = '93')


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    miércoles, 19 de abril de 2017 19:11
  • no se visualiza el distinct, igual actualiza los 7 registros :(
    miércoles, 19 de abril de 2017 19:18
  • Aislet

    En esta consulta tienes 7 registros, siempre actualizará aquellos, no tienes algo que los identifique como únicos, no sé si esto te sirva?

    update PR1 set clave_c = 'u'
    where rfc in (select distinct rfc from pr1) and concepto ='93'


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    miércoles, 19 de abril de 2017 19:23
  • Trata:

    -- sentencia original corregida
    UPDATE PR1 
    SET CLAVE_C = 'u' 
    WHERE RFC IN (SELECT RFC FROM PR1 WHERE CONCEPTO ='93' GROUP BY RFC HAVING COUNT (*) = 1)
    AND CONCEPTO = '93';
    
    -- usando una CTE o tabla derivada
    WITH R AS (
    SELECT
    	RFC
    FROM
    	PR1
    WHERE
    	CONCEPTO ='93'
    GROUP BY
    	RFC
    HAVING
    	COUNT(*) = 1
    )
    UPDATE P
    SET P.CLAVE_C = 'u'
    FROM PR1 AS P INNER JOIN R ON P.RFC = R.RFC
    WHERE P.CONCEPTO ='93';
    GO

    Los RFC seran los unico pero siempre y cuando consideres solo ese concepto.

    Si te refieres a que el RFC pueda aparecer multiples veces pero solo con este concepto entonces trata:

    WITH R AS (
    SELECT
    	RFC
    FROM
    	PR1
    GROUP BY
    	RFC
    HAVING
    	MIN(CONCEPTO) = MAX(CONCEPTO)
    	AND MIN(CONCEPTO) = '93'
    )
    UPDATE P
    SET P.CLAVE_C = 'u'
    FROM PR1 AS P INNER JOIN R ON P.RFC = R.RFC
    ;
    GO


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas


    miércoles, 19 de abril de 2017 19:37