SQL - Consulta en Datos Agrupados usando bucle

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 5 puestos en SQL (en relación al último mes)
Gráfica de SQL

Consulta en Datos Agrupados usando bucle

Publicado por Abraham (4 intervenciones) el 25/06/2018 04:59:47
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

123456789

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:

1236

La tabla que tengo es la siguiente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Consulta en Datos Agrupados usando bucle

Publicado por Isaias (1921 intervenciones) el 25/06/2018 16:38:09
¿En que motor de base de datos?, ¿Lleva algun avance de su consulta?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 5 puestos en SQL (en relación al último mes)
Gráfica de SQL

Consulta en Datos Agrupados usando bucle

Publicado por Abraham (4 intervenciones) el 25/06/2018 22:20:06
Esta en sql server 2012, por el momento el unico avance que tengo es la busqueda por id_planilla
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DECLARE @PLANTILLA INT = 1;
SELECT t.*,
       ((((t.Javas_Hechas_Campo - t.cupo_diario) * t.precio_caja) + t.Javas_anaranjadas) / o.veces) /
		(
		SELECT COUNT(r.trabajador)
		FROM
			(
				SELECT trabajador
					FROM trab t
				GROUP BY trabajador
			) AS r
		) AS Adic_x_MAQ
	FROM trab t
		 INNER JOIN
		(
			SELECT t.trabajador,
				COUNT(*) AS veces
				FROM trab t
				where t.id_Planilla = @PLANTILLA
					GROUP BY t.trabajador
		) AS o ON t.trabajador = o.trabajador
where t.id_Planilla = @PLANTILLA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 5 puestos en SQL (en relación al último mes)
Gráfica de SQL

Consulta en Datos Agrupados usando bucle

Publicado por Abraham (4 intervenciones) el 26/06/2018 23:51:17
Hola acabo de hacer una consulta que es la siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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

Esta consulta me bota este resultado:

999
como se dan cuenta solo hace la busqueda por el id_planilla 2, cuando lo que quiero es que haga la busqueda por el id_planilla 1 y 2, ya que la semana 25 esta relacionada con ambos id_planilla.
123456789
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar