none
Duplicado de Registros RRS feed

  • Pregunta

  • Buenas tardes a todos 

    La cuestion es diferente, hace tiempo que se me presento este problema , pero se soluciono de otra manera pero esta vez no hay vuelta atras

    Lo que pasa es lo siguiente 

    Tengo una tabla donde se guardan temperaturas algo asi

    id nombre_equipo temp  fecha

    1  equipo1            3.5    2019-05-01  00:00:05

    2  equipo2            7.5    2019-05-01  00:00:07

    3  equipo1            5.5    2019-05-01 00:00:08

    3  equipo3            7.5   2019-05-01 00:00:05

    Lo que pasa que cuando hago lo siguiente

    SELECT fecha , CASE WHEN nombre= 'equipo1' THEN temp END AS 'Equipo1',

    CASE WHEN nombre= 'equipo2' THEN temp END AS 'Equipo2',

    CASE WHEN nombre= 'equipo3' THEN temp END AS 'Equipo3'

      FROM  TEMP

    GROUP BY fecha ,nombre, temp

    Resultado:

    fecha                                Equipo1         Equipo 2        Equipo 3

    2019-05-01  00:00:05       3.5                            

    2019-05-01  00:00:05    NULL              NULL                3.5

    2019-05-01  00:00:07     NULL              7.5                 NULL

    2019-05-01 00:00:08     5.5                 NULL               NULL

    lo que sucede es que me repite dos veces el valor 00:00:05 ya que equipos diferentes pose esa misma hora pero con temperatura diferente

    Si saben de alguna solucion se los agradeceria de antemano 


    Pregunta

    martes, 25 de junio de 2019 19:50

Respuestas

  • Hola Dave2203:

    supongo que lo que solicitas es algo del estilo:

    DECLARE @TBL TABLE( id INT, nombre VARCHAR(100), temp FLOAT,  fecha DATETIME)
    INSERT INTO @TBL (ID, nombre, temp, fecha)
    VALUES
    (1,'equipo1',3.5,'2019-05-01 00:00:05'),
    (2,'equipo2',7.5,'2019-05-01 00:00:07'),
    (3,'equipo1',5.5,'2019-05-01 00:00:08'),
    (3,'equipo3',7.5,'2019-05-01 00:00:05');
    
    SELECT  
    	   fecha, 
    	   SUM(CASE WHEN nombre= 'equipo1' THEN temp END) AS 'Equipo1',
    	   SUM(CASE WHEN nombre= 'equipo2' THEN temp END) AS 'Equipo2',
    	   SUM(CASE WHEN nombre= 'equipo3' THEN temp END) AS 'Equipo3'
      FROM  @TBL
      GROUP BY fecha 
      

    Entiendo que quieres la suma de valores, para la misma fecha. O lo que es lo mismo, para el 2019-01-05 00:00:05.000 que las dos filas, se junten, por tanto hay que utilizar una función de agregación.

    Salida

    Group by 

    https://javifer2.blogspot.com/search/label/group%20by

    • Editado Javi Fernández F martes, 25 de junio de 2019 20:15 Incluir enlace
    • Marcado como respuesta Dave2203 jueves, 27 de junio de 2019 21:27
    martes, 25 de junio de 2019 20:14

Todas las respuestas

  • Hola Dave2203:

    supongo que lo que solicitas es algo del estilo:

    DECLARE @TBL TABLE( id INT, nombre VARCHAR(100), temp FLOAT,  fecha DATETIME)
    INSERT INTO @TBL (ID, nombre, temp, fecha)
    VALUES
    (1,'equipo1',3.5,'2019-05-01 00:00:05'),
    (2,'equipo2',7.5,'2019-05-01 00:00:07'),
    (3,'equipo1',5.5,'2019-05-01 00:00:08'),
    (3,'equipo3',7.5,'2019-05-01 00:00:05');
    
    SELECT  
    	   fecha, 
    	   SUM(CASE WHEN nombre= 'equipo1' THEN temp END) AS 'Equipo1',
    	   SUM(CASE WHEN nombre= 'equipo2' THEN temp END) AS 'Equipo2',
    	   SUM(CASE WHEN nombre= 'equipo3' THEN temp END) AS 'Equipo3'
      FROM  @TBL
      GROUP BY fecha 
      

    Entiendo que quieres la suma de valores, para la misma fecha. O lo que es lo mismo, para el 2019-01-05 00:00:05.000 que las dos filas, se junten, por tanto hay que utilizar una función de agregación.

    Salida

    Group by 

    https://javifer2.blogspot.com/search/label/group%20by

    • Editado Javi Fernández F martes, 25 de junio de 2019 20:15 Incluir enlace
    • Marcado como respuesta Dave2203 jueves, 27 de junio de 2019 21:27
    martes, 25 de junio de 2019 20:14
  • Deja lo pruebo , pense que eso no servia en SQL SERVER

    Pregunta

    martes, 25 de junio de 2019 21:26