none
ESCRIBIR EN TABLA A PARTIR DE OTRA CONSULTA RRS feed

  • Pregunta

  • Buenas tardes, me estoy rompiendo la cabeza intentando resolver es siguiente problema, les ruego me aconsejen que hacer:

    • tengo una tabla 'X' en la cual tengo 5 campos de los cuales 2 fueron llenados totalmente y los otros 3 son campos, de tipo BIT ,quiero que se llenen automáticamente encontrando el 'X' registro en otras 3 tablas, vale decir devolviendo el valor 1 si se encuentra el registro en la tabla 'Y' caso contrario devolver 0 y se escriba el valor en el campo correspondiente de la fila correspondiente de la tabla 'X'

    la verdad no tengo grandes conocimientos en SQL SERVER y no se como formular una consulta que realice esto, algunas pautas???

    jueves, 7 de enero de 2016 21:30

Respuestas

  • Hola Diego León Peña,

    A ver, recapitulando. Tienes la tabla X donde 3 de sus campos requieren ser actualizados desde las tablas A, B y C en tanto los identificadores coincidan, vamos al caso:

    DECLARE @TablaX table (Id int, nombre varchar(100), Campo3 bit, Campo4 bit, Campo5 bit);
    INSERT INTO @TablaX VALUES
    	(1, 'A', NULL, NULL, NULL),
    	(2, 'B', NULL, NULL, NULL),
    	(3, 'C', NULL, NULL, NULL),
    	(4, 'D', NULL, NULL, NULL),
    	(5, 'E', NULL, NULL, NULL);
    
    DECLARE @TablaA table (Id int, valor nvarchar(100));
    DECLARE @TablaB table (Id int, valor nvarchar(100));
    DECLARE @TablaC table (Id int, valor nvarchar(100));
    
    INSERT INTO @TablaA VALUES
    	(1, '1'),
    	(2, '0'),
    	(3, '1');
    
    INSERT INTO @TablaB VALUES
    	(1, '1'),
    	(2, '0'),
    	(3, '1'),
    	(5, '0');
    
    INSERT INTO @TablaC VALUES
    	(1, '1'),
    	(2, '0'),
    	(3, '1'),
    	(5, '0'),
    	(4, '0');
    
    UPDATE @TablaX
    SET
    	Campo3 = CASE WHEN a.Id IS NOT NULL THEN 1 ELSE 0 END,
    	Campo4 = CASE WHEN b.Id IS NOT NULL THEN 1 ELSE 0 END,
    	Campo5 = CASE WHEN c.Id IS NOT NULL THEN 1 ELSE 0 END
    FROM
    	@TablaX x
    	LEFT JOIN @TablaA a ON (a.id = x.Id)
    	LEFT JOIN @TablaB b ON (b.id = x.Id)
    	LEFT JOIN @TablaC c ON (c.id = x.Id);
    
    SELECT * FROM @TablaX;


    jueves, 7 de enero de 2016 21:54