none
Como puedo agrupar las hora por dias RRS feed

  • Pregunta

  • DECLARE @dias INT
    	SET @dias = 1
    	DECLARE @hora_desde INT
    	SET @hora_desde = 8
    
    	DECLARE @hora_hasta INT
    	SET @hora_hasta = 12
    
    	WHILE (@dias <=5)  -- For de todos los dias 
    	BEGIN
    	    
    		print @dias  
    		SET @dias = @dias + 1
    	    
    	  BEGIN
    	  
    		WHILE (@hora_desde <= @hora_hasta)  -- For de todos los hora 
    		BEGIN		
    			
    			print @hora_desde
    			SET @hora_desde = @hora_desde + 1
    			
    			IF @hora_desde = 13
    			BEGIN
    				BREAK;
    			END
    			
    			
    		END
    
    	  END 
    	
    	END
    	GO
    

    Necesito obtener el siguiente resultado

    1

    8
    9
    10
    11
    12

    2

    8
    9
    10
    11
    12

    3

    8
    9
    10
    11
    12

    etc


    gracias

    lunes, 7 de julio de 2014 17:57

Respuestas

  • Como bien dice Sergio, en SQL Server no es, casi nunca, una buena idea usar bucles.

    La siguiente consulta:

    WITH D AS
    (
    	SELECT 1 AS Dia
    	UNION ALL
    	SELECT 2
    	UNION ALL
    	SELECT 3
    ),
    H AS
    (
    	SELECT 8 AS Hora
    	UNION ALL
    	SELECT 9
    	UNION ALL
    	SELECT 10
    	UNION ALL
    	SELECT 11
    	UNION ALL
    	SELECT 12
    )
    SELECT D.Dia, H.Hora
    FROM D CROSS JOIN H 
    	

    Arroja el siguiente resultado:

    Dia

    Hora

    1

    8

    1

    9

    1

    10

    1

    11

    1

    12

    2

    8

    2

    9

    2

    10

    2

    11

    2

    12

    3

    8

    3

    9

    3

    10

    3

    11

    3

    12


    EntityLite: A Lightweight, Database First, Micro ORM


    • Editado Jesús López lunes, 7 de julio de 2014 22:26 x
    • Marcado como respuesta egrullard martes, 8 de julio de 2014 14:13
    lunes, 7 de julio de 2014 22:24

Todas las respuestas

  • Hola.

    Porque un While ?

    Sería mejor si indica la estructura de la tabla, lo más probable que con un Group By te entregue el resultado esperado.

    Atte.

    CristianPM


    DBA SQL Server Santiago/Chile


    • Editado CMAPM lunes, 7 de julio de 2014 18:18
    lunes, 7 de julio de 2014 18:18
  • hola,

    Lo hago con While ?, que es una consulta simple , no tengo niguna estructra, pero  es posible sacar la información asi tal como la muestro   ? 

    saludo

    lunes, 7 de julio de 2014 18:34
  • De poder, se puede...Aunque las iteraciones no es lo mejor ( ni recomendable ) de SQL SERVER, si se puede obtener lo que necesitas pero no me queda claro si esto lo quieres para utilizarlo en una consulta o no comprendo...

    Danos un poco más de información, para que lo necesitas ? si lo quieres para una consulta, como la piensas aplicar ? y además de regalarnos los scripts de creación de tu tabla y datos.

    SALUDOS


    Sergio Sánchez Arias
    Oaxaca,México
    AYÚDANOS A AYUDARTE

    lunes, 7 de julio de 2014 20:00
  • Como bien dice Sergio, en SQL Server no es, casi nunca, una buena idea usar bucles.

    La siguiente consulta:

    WITH D AS
    (
    	SELECT 1 AS Dia
    	UNION ALL
    	SELECT 2
    	UNION ALL
    	SELECT 3
    ),
    H AS
    (
    	SELECT 8 AS Hora
    	UNION ALL
    	SELECT 9
    	UNION ALL
    	SELECT 10
    	UNION ALL
    	SELECT 11
    	UNION ALL
    	SELECT 12
    )
    SELECT D.Dia, H.Hora
    FROM D CROSS JOIN H 
    	

    Arroja el siguiente resultado:

    Dia

    Hora

    1

    8

    1

    9

    1

    10

    1

    11

    1

    12

    2

    8

    2

    9

    2

    10

    2

    11

    2

    12

    3

    8

    3

    9

    3

    10

    3

    11

    3

    12


    EntityLite: A Lightweight, Database First, Micro ORM


    • Editado Jesús López lunes, 7 de julio de 2014 22:26 x
    • Marcado como respuesta egrullard martes, 8 de julio de 2014 14:13
    lunes, 7 de julio de 2014 22:24