none
COMO MODIFICAR LOS REGISTROS DE UNA TABLA A PARTIR DE UN SELECT SOBRE OTRA TABLA. RRS feed

  • Pregunta

  • Hola, 

    Trabajo con SQL Server y tengo el siguiente problema. 

    Resulta que a través de una consulta mediante tablas CTE´s realizada sobre mi tabla ALBARANCC he obtenido la siguiente selección.  La resumo en una tabla temporal llamada resultado:

    DECLARE @resultado AS TABLE
    (
       Ident int,
       ACCRPRCOD  Int ,
       ACCFEC date,
       ACCIMP2 decimal(10,2)
        
       
    )
    
    ;
    
    INSERT INTO @resultado
    VALUES
    
     (9,1,'01/01/2010',10),
     (17,1,'01/01/2010',17),
     (23,1,'01/01/2010',10)
    
     ;
    
    
     DECLARE @ALBARANCC AS TABLE
    (
       Ident int,
       ACCRPRCOD  Int ,
       ACCFEC date,
       ACCIMP2 decimal(10,2)
        
       
    )
    
    ;
    
    INSERT INTO @ALBARANCC
    VALUES
     (1,1,'01/01/2010',60),
     (2,1,'01/01/2010',52),
     (3,1,'01/01/2010',18),
     (4,1,'01/01/2010',44.5),
     (5,1,'01/01/2010',22),
     (6,1,'01/01/2010',3),
     (7,3,'01/01/2010',11),
     (8,1,'01/01/2010',36),
     (9,1,'01/01/2010',10),
     (10,2,'01/01/2010',19),
     (11,1,'01/01/2010',21),
     (12,1,'01/01/2010',3.1),
     (13,1,'01/01/2010',22),
     (14,1,'01/01/2010',3),
     (15,3,'01/01/2010',17),
     (16,1,'01/01/2010',31),
     (17,1,'01/01/2010',17),
     (18,2,'01/01/2010',29),
     (19,1,'01/01/2010',21),
     (20,1,'01/01/2010',3.1),
     (21,1,'01/01/2010',62),
     (22,3,'01/01/2010',1),
     (23,1,'01/01/2010',10),
     (24,1,'02/01/2010',5),
     (25,2,'02/01/2010',8),
     (26,3,'02/01/2010',3),
     (27,1,'02/01/2010',2),
     (28,3,'02/01/2010',11),
     (29,1,'02/01/2010',5),
     (30,2,'02/01/2010',3),
     (31,2,'02/01/2010',4)
     ;

    Pues bien, básicamente necesito modificar el valor del campo ACCRPRCOD y darle el valor=2 de aquellos registros de la tabla ALBARANCC que aparecen en la tabla RESULTADO.

    ¿Alguna idea de cómo puedo dar forma a ello?

    Muchas gracias

    Angel



    miércoles, 25 de enero de 2017 14:38

Respuestas

  • Como traducimos "aparecen" en este caso, que todas las columnas macheen o solo la columna en cuestion?

    Trata (suponiendo que todas las columnas machen):

    -- identificarlas
    SELECT
    	A.*
    FROM
       	@ALBARANCC AS A
    WHERE
    	EXISTS (
    	SELECT *
    	FROM @resultado AS B 
    	WHERE B.ACCRPRCOD = A.ACCRPRCOD AND B.ACCFEC = A.ACCFEC AND B.ACCIMP2 = A.ACCIMP2
    	);
    
    -- actualizarlas y ver valores previos y nuevos
    UPDATE
    	A
    SET 
    	A.ACCRPRCOD = 2
    OUTPUT
    	deleted.ACCRPRCOD as prv_ACCRPRCOD, Inserted.*
    FROM 
    	@ALBARANCC AS A 
    	INNER JOIN 
    	@resultado AS B 
    	ON B.ACCRPRCOD = A.ACCRPRCOD
    	AND B.ACCFEC = A.ACCFEC
    	AND B.ACCIMP2 = A.ACCIMP2;



    AMB

    Some guidelines for posting questions...

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

    • Marcado como respuesta Angeleci miércoles, 25 de enero de 2017 16:24
    miércoles, 25 de enero de 2017 14:59

Todas las respuestas