SQL Server - Dos consultas de una sola tabla.

 
Vista:
sin imagen de perfil

Dos consultas de una sola tabla.

Publicado por Alan (5 intervenciones) el 11/02/2015 18:12:11
Hola buen día a todos!, nuevamente recurro a ustedes los expertos para ver si me pueden iluminar un poco con esta situación que me causa dolores de cabeza y ni dormir me ha dejado.


Tengo la siguiente tabla a modo de ejemplo, la estructura no la puedo mover ya que otro sistema así la necesita y asi es como guarda los datos.

Tabla


Lo que quiero es hacer una consulta donde me arroje lo siguiente.
Result

Que los campos para cada ente se complementen con el numero de expediente posterior, estatus de juicio y fecha ultimos relacionados por el numero de expediente original.

Siento que estoy desvariando pero es mejor un tonto que pregunta que uno que no lo hace jeje.

saludos!!!.
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: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Dos consultas de una sola tabla.

Publicado por Isaias (4558 intervenciones) el 11/02/2015 21:46:08
Para poder ayudarte y aclaro, por acá no hay EXPERTOS, todos somos simples principiantes.

Requiero que me facilites la respuesta, manda el CREATE de tu tabla y el INSERT de algunos de tus registros, como en el ejemplo, ¿Cómo ves?
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

Dos consultas de una sola tabla.

Publicado por Alan (5 intervenciones) el 12/02/2015 15:53:12
Hola, claro que si, sin problema.

aqui el script.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE TABLE [dbo].[JUICIOSTEMP](
	[ENTE] [varchar](50) NULL,
	[CALIDAD_EN_JUICIO] [varchar](50) NULL,
	[NUM_DE_EXPEDIENTE_ORIGINAL] [varchar](50) NULL,
	[MATERIA] [varchar](50) NULL,
	[NUM_DE_EXPEDIENTE_POSTERIOR] [varchar](50) NULL,
	[ESTATUS_DE_JUICIO] [varchar](50) NULL,
	[FECHA_DE_ULT_ACTUACION] [datetime] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT [dbo].[JUICIOSTEMP] ([ENTE], [CALIDAD_EN_JUICIO], [NUM_DE_EXPEDIENTE_ORIGINAL], [MATERIA], [NUM_DE_EXPEDIENTE_POSTERIOR], [ESTATUS_DE_JUICIO], [FECHA_DE_ULT_ACTUACION]) VALUES (N'ALAN S.', N'DEMANDADO', N'134/2015', N'LABORAL', NULL, N'SE INICIA JUICIO', CAST(0x0000A41300000000 AS DateTime))
INSERT [dbo].[JUICIOSTEMP] ([ENTE], [CALIDAD_EN_JUICIO], [NUM_DE_EXPEDIENTE_ORIGINAL], [MATERIA], [NUM_DE_EXPEDIENTE_POSTERIOR], [ESTATUS_DE_JUICIO], [FECHA_DE_ULT_ACTUACION]) VALUES (NULL, N'DEMANDADO', N'134/2015', N'LABORAL', N'323/2015', N'SE PROCEDE JUICIO', CAST(0x0000A41700000000 AS DateTime))
INSERT [dbo].[JUICIOSTEMP] ([ENTE], [CALIDAD_EN_JUICIO], [NUM_DE_EXPEDIENTE_ORIGINAL], [MATERIA], [NUM_DE_EXPEDIENTE_POSTERIOR], [ESTATUS_DE_JUICIO], [FECHA_DE_ULT_ACTUACION]) VALUES (NULL, N'DEMANDADO', N'134/2015', N'LABORAL', N'324/2015', N'TERMINA JUICIO', CAST(0x0000A43000000000 AS DateTime))
INSERT [dbo].[JUICIOSTEMP] ([ENTE], [CALIDAD_EN_JUICIO], [NUM_DE_EXPEDIENTE_ORIGINAL], [MATERIA], [NUM_DE_EXPEDIENTE_POSTERIOR], [ESTATUS_DE_JUICIO], [FECHA_DE_ULT_ACTUACION]) VALUES (N'MICHELLE', N'DEMANDADO', N'200/2014', N'MERCANTIL', NULL, N'SE INICIA JUICIO', CAST(0x0000A43200000000 AS DateTime))
INSERT [dbo].[JUICIOSTEMP] ([ENTE], [CALIDAD_EN_JUICIO], [NUM_DE_EXPEDIENTE_ORIGINAL], [MATERIA], [NUM_DE_EXPEDIENTE_POSTERIOR], [ESTATUS_DE_JUICIO], [FECHA_DE_ULT_ACTUACION]) VALUES (NULL, N'DEMANDADO', N'200/2014', N'MERCANTIL', N'101/2015', N'JUICIO CANCELADO', CAST(0x0000A43B00000000 AS DateTime))

Espero de verdad puedan ayudarme ya le di mil vueltas al asunto y no veo claro como se hace eso.
Saludos.
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Dos consultas de una sola tabla.

Publicado por Isaias (4558 intervenciones) el 12/02/2015 19:26:47
¿Y que versión de SQL Server manejas?
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Dos consultas de una sola tabla.

Publicado por Isaias (4558 intervenciones) el 12/02/2015 21:41:58
Alan

Con los datos que proporcionas, realice el siguiente ejemplo.

(Tal vez no sea el mas vistoso, pero da los resultados esperados)

Para no crear una tabla en mi base de pruebas, solo le incluí el signo # al nombre de tu tabla original




SELECT tablelast.[ENTE]
,table1.[CALIDAD_EN_JUICIO]
,table1.[NUM_DE_EXPEDIENTE_ORIGINAL]
,table1.[MATERIA]
,table1.[NUM_DE_EXPEDIENTE_POSTERIOR]
,table1.[ESTATUS_DE_JUICIO]
,table1.[FECHA_DE_ULT_ACTUACION]
FROM #JUICIOSTEMP table1 inner join (
SELECT [NUM_DE_EXPEDIENTE_ORIGINAL]
, max([FECHA_DE_ULT_ACTUACION]) as [FECHA_DE_ULT_ACTUACION]
FROM #JUICIOSTEMP
GROUP BY [NUM_DE_EXPEDIENTE_ORIGINAL]) as table2 on table1.[NUM_DE_EXPEDIENTE_ORIGINAL] = table2.NUM_DE_EXPEDIENTE_ORIGINAL
and table2.FECHA_DE_ULT_ACTUACION = table1.[FECHA_DE_ULT_ACTUACION]
inner join (
SELECT table0.[ENTE]
, table0.[CALIDAD_EN_JUICIO]
, table0.[NUM_DE_EXPEDIENTE_ORIGINAL]
, table0.[MATERIA]
, table0.[NUM_DE_EXPEDIENTE_POSTERIOR]
, table0.[ESTATUS_DE_JUICIO]
, table0.[FECHA_DE_ULT_ACTUACION]
FROM #JUICIOSTEMP as table0
WHERE table0.[ENTE] is not null) tablelast
on tablelast.NUM_DE_EXPEDIENTE_ORIGINAL = table1.[NUM_DE_EXPEDIENTE_ORIGINAL]

--- Obtengo
ALAN S. DEMANDADO 134/2015 LABORAL 324/2015 TERMINA JUICIO 2015-01-30 00:00:00.000
MICHELLE DEMANDADO 200/2014 MERCANTIL 101/2015 JUICIO CANCELADO 2015-02-10 00:00:00.000
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

Dos consultas de una sola tabla.

Publicado por Alan (5 intervenciones) el 09/04/2015 16:01:44
hola Isaias, primero y antes que nada una disculpa por no haber contestado hace mucho tiempo, y despues quisiera darte las gracias por brindarme el apoyo.

Te comento, el query que me hiciste el favor de formular lo probe y realmente funciona solo que funciona siempre y cuando existan los registros bien llenados, digamos si en la fila complementaria algun dato de los que jalamos es nulo los resultados que arroja el query son incorrectos. no se como explicarlo mejor...

En fin el detalle es que la base es un desastre en si misma por lo que recurri a ayuda externa con un compañero de la empresa y el despues de mucho pensarle logro dar con la solucion.
adjunto el query tal cual de mi programa para si a alguien le sirve lo pueda usar sin problemas.

basicamente la estructura es la misma de la tabla que mencione salvo por algunos nombres de campos que cambian.

SELECT B.DWDOCID,C.FECHA as FECHA_INI,B.FECHA AS FECHA_FIN,B.ENTE,C.MATERIA,B.EXPEDIENTEPOSTERIORES,B.N__DE_EXPEDIENTE,B.ESTADOPROCESAL,B.TIPODEDOCUMENTO,C.ORIGENDEDEMANDAODOCUMENTOBASE
FROM
[dwdata].[dbo].[CONTROL_DE_JUICIOS]as B,/**Datos de ultima modificacion**/
[dwdata].[dbo].[CONTROL_DE_JUICIOS]as C /**Datos de la primera modificacion**/
WHERE
B.[DWDOCID]=(SELECT MAX(A.DWDOCID) FROM [dwdata].[dbo].[CONTROL_DE_JUICIOS]as A WHERE A.N__DE_EXPEDIENTE=B.N__DE_EXPEDIENTE)
/*AND B.N__DE_EXPEDIENTE LIKE '038/2015'*/
AND C.N__DE_EXPEDIENTE=B.N__DE_EXPEDIENTE AND C.DWDOCID=(SELECT MIN(D.DWDOCID) FROM [dwdata].[dbo].[CONTROL_DE_JUICIOS]as D WHERE D.N__DE_EXPEDIENTE=C.N__DE_EXPEDIENTE)
ORDER BY B.N__DE_EXPEDIENTE

nuevamente agradesco la enorme ayuda que prestan en este foro y felicito a los integrantes del mismo que ayudan a los novatos como yo.

saludos gente!.
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