none
Consulta en Datos Agrupados usando bucle RRS feed

  • Pregunta

  • Buen dia tengo que elaborar un consulta, la cual necesito que me haga una busqueda por semana, y que a su vez me haga un select por cada id_planilla con la cual este relacionado, por ejemplo en la siguiente imagen tengo la semana 25 y el id_planilla 1 y 2

    Como podría lograr una consulta, había visto en algunas paginas y llegue a la conclusión que se podría hacer uso de un Bucle, quiziera que me orienten acerca de como podria lograr hacer la consulta.

    El resultado que quiero obtener es el siguiente:


    La tabla que tengo es la siguiente

    CREATE TABLE [dbo].[trab](
    	[id_Detalle] [int] IDENTITY(1,1) NOT NULL,
    	[trabajador] [varchar](50) NULL,
    	[cupo_diario] [int] NULL,
    	[Javas_Hechas_Campo] [int] NULL,
    	[precio_caja] [float] NULL,
    	[Javas_anaranjadas] [int] NULL,
    	[Diario] [float] NULL,
    	[Dominical] [float] NULL,
    	[Id_Planilla] [int] NULL,
    	[Semana] [varchar](10) NULL,
     CONSTRAINT [PK_trab] PRIMARY KEY CLUSTERED 
    (
    	[id_Detalle] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    SET ANSI_PADDING OFF
    GO
    SET IDENTITY_INSERT [dbo].[trab] ON 
    
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1, N'Admin', 250, 252, 2.3, 52, 20, 2.5, 1, N'25')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (8, N'Joel', 250, 252, 2.3, 52, 20, 2.5, 1, N'25')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (9, N'Evelyn', 250, 252, 2.3, 52, 20, 2.5, 1, N'25')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (10, N'Jorge ', 250, 252, 2.3, 52, 20, 2.5, 1, N'25')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1036, N'Jorge', 250, 252, 2.3, 52, 20, 2.5, 1, N'25')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1037, N'Jorge', 250, 252, 2.3, 52, 20, 2.5, 1, N'25')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1044, N'Admin', 250, 252, 2.3, 52, 5, 2.5, 2, N'25')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1045, N'Joel', 250, 252, 2.3, 52, 5, 2.5, 2, N'25')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1046, N'Evelyn', 250, 252, 2.3, 52, 5, 2.5, 2, N'25')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1047, N'Jorge', 250, 252, 2.3, 52, 5, 2.5, 2, N'25')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1048, N'Jorge', 250, 252, 2.3, 52, 5, 2.5, 2, N'25')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1049, N'Jorge', 250, 252, 2.3, 52, 5, 2.5, 2, N'25')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1050, N'Admin', 250, 252, 2.3, 52, 5, 2.5, 3, N'26')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1051, N'Joel', 250, 252, 2.3, 52, 5, 2.5, 3, N'26')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1052, N'Evelyn', 250, 252, 2.3, 52, 5, 2.5, 3, N'26')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1053, N'Jorge', 250, 252, 2.3, 52, 5, 2.5, 3, N'26')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1054, N'Jorge', 250, 252, 2.3, 52, 5, 2.5, 3, N'26')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1055, N'Jorge', 250, 252, 2.3, 52, 5, 2.5, 3, N'26')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1056, N'Pedro', 250, 252, 2.3, 52, 5, 2.5, 3, N'26')
    INSERT [dbo].[trab] ([id_Detalle], [trabajador], [cupo_diario], [Javas_Hechas_Campo], [precio_caja], [Javas_anaranjadas], [Diario], [Dominical], [Id_Planilla], [Semana]) VALUES (1057, N'Pedro', 250, 252, 2.3, 52, 5, 2.5, 3, N'26')
    SET IDENTITY_INSERT [dbo].[trab] OFF

       


    domingo, 24 de junio de 2018 20:49

Todas las respuestas

  • No hace falta un bucle.  Usa una variable tipo tabla, inserta esos valores de busqueda y has un JOIN con tu tabla.

    declare @T table (
    id_planilla int not null,
    semana varchar(10) not null,
    primary key (id_planilla, semana)
    );

    insert into @T (id_planilla, semana) values (1, 25), (2, 25);

    select A.*
    from dbo.trab as A iiner join @T as B
    on A.semana = B.semana and A.id_planilla = B.id_planilla;


    AMB

    Some guidelines for posting questions...

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

    lunes, 25 de junio de 2018 11:54
  • Agradezco la respuesta pero no es lo que necesito, en la primera imagen que mostre que esta,

    la semana 25 esta relacionada con Id_Planilla 1 y 2 , pero he hecho una consulta que me bota este resultado.

    lo que quiero es que me busque por el Id_planilla 1 y 2 ... ademas que la consulta no me bote los resultados  separados, sino en un solo.

    La consulta que hize fue la siguiente.

    Declare @id int,
            @count int,
    		@Semana         varchar(10) ='25',
    		@Id_Pla INT
    
    Set @id=1;
    with mycte as (SELECT count(ID) AS ID FROM (
    select count(trab.Id_Planilla) as ID from trab  
    where trab.Semana = @Semana 
    group by trab.Id_Planilla
    ) AS M)
    select @count= ID FROM mycte
    
    while @id<=@count
    begin
    Select  @Id_Pla = (trab.Id_Planilla) from trab 
    where trab.Semana = @Semana
    group by trab.Id_Planilla, trab.Semana
    
    SELECT [id_Detalle]      ,[trabajador]      ,[cupo_diario]      ,[Javas_Hechas_Campo]
          ,[precio_caja]      ,[Javas_anaranjadas]      ,[Diario]      ,[Dominical],
    	  (([cupo_diario]-[Javas_Hechas_Campo])*([precio_caja]))+[Javas_anaranjadas]
          ,[Id_Planilla]      ,[Semana]
    	  FROM trab 
    wHERE SEMANA= @Semana AND Id_Planilla=@Id_Pla
    select @id=@id+1
    end

    martes, 26 de junio de 2018 21:47