SQL VINCULADO?, SQL DIFICIL?

27/02/2004 - 17:00 por Jose Díaz | Informe spam
Saludos amigos.

Actualmente estoy desarrrollando mi aplicación para la
tesis y se me presentan un par de dudas que a pesar de
que soy del tipo de persona que agoto hasta la última
búsqueda en la web no he dado con la solución y me vi en
la necesidad de plantearlo aquí, espero puedan ayudarme:

1. La primera duda es referente a cual es la mejor manera
de mantener copias de tablas entre servidores distintos.
El escenario es el siguiente:
Existen dos servidores de bases de datos en SQL
Server 2000: uno llamado SqlSava y otro
SqlServerEstunePlus. La base de datos que yo estoy
administrando es la de SqlServerEstunePlus. En
SqlServerSava existen 6 tablas que están relacionadas
entre ellas y necesito poder replicar exactamente las
tablas en SqlServerEstunePlus a través de un proceso por
demanda desde una interfaz de usuario. Ahora bien, existe
la condición de que yo realizo modificaciones en los
datos de las tablas que estarían en SqlServerEstunePlus y
si migro la información desde SqlServerSava en la
siguiente migración a través de la opción del Sql Server
2000 de "Plan de Mantenimiento" se me borran las
modificaciones que tenía en SqlServerEstunePlus. ¿Cuál
podría ser el mejor esquema para poder hacer la réplica
de la información si perder los cambios que haya
realizado en SqlServerEstunePlus?

2. Estoy elaborando un reporte en Crystal Reports y como
todos sabemos es una buena herramienta de generación de
reportes siempre y cuando se le presente el la estructura
completa de lo que queremos mostrar. Entonces yo he
programado un procedimiento almacenado con un parámetro y
funciona perfecto en términos de que presenta la
información válida. El escenario es el siguiente:
tblDependencias Ejemplo: Consejo Superior,
Coordinación Académica, etc.
#Id
Nombre
,
tblTipoEmpleado Ejemplo: Solo dos tipos ->
Administrativo, Obrero.
#Id
Nombre
,
tblEstadísticas Ejemplo: 1,2,54,32
#Id
DependenciaId
TipoEmpleadoId
CantidadHombres
CantidadMujeres

El problema es que cuando hago la consulta en el
procedimiento almacenado me repite los regstros por
Dependencia y es lógico que lo haga porque así está
almacenado en la BD.

Esta es la consulta: Select D.Nombre,
TAM = CASE C.Nombre
WHEN 'Administrativo' THEN CantidadMujeres ELSE 0 END,
TAH = CASE C.Nombre
WHEN 'Administrativo' THEN CantidadHombres ELSE 0 END,
TOM = CASE C.Nombre
WHEN 'Obrero' THEN CantidadMujeres ELSE 0 END,
TOH = CASE C.Nombre
WHEN 'Obrero' THEN CantidadHombres ELSE 0 END,
B.*
From

EstunePlusAdministracionEstadisticas A
Join PERIODO B On
(A.PeriodoID = B.cod_periodo)
Join
EstunePlusAdministracionTiposPersonal C On
(A.TipoPersonalID = C.ID)
Join
EstunePlusAdministracionDependencias D On
(A.DependenciaID = D.ID)

La estructura que me arroja esta consulta es algo así
como esto:

Presidencia del Consejo Superior 1 0 0 0
Autoridades Rectorales 2 0 0 0
Consejo de Estudios de Postgrados 7 3 0 0
Directores de Escuelas 1 5 0 0
Directores de Organismos de Apoyo 0 7 0 0
Consultoría Jurídica 1 0 0 0
Dirección General Sede Centro 1 0 0 0
Coordinación General Sede Centro 0 1 0 0
Coordinadores Académicos 0 4 0 0
Coordinadores de Departamentos 3 3 0 0
Servicios Generales 8 22 0 0
Presidencia Centro de Tecnologías 1 0 0 0
Soporte Técnico CDT 7 1 0 0
Mantenimiento 1 0 0 0
Mantenimiento 0 0 7 4
Seguridad 0 0 7
0

Fíjense que "Mantenimiento" se repite. Para que el
Reporte en Crystas me muestre sin repetir necesitaría que
el resultado fuera:

Mantenimiento 1 0 7
4

Estas son el par de dudiñas que tengo, les agradezco
mucho su ayuda!

Gracias

José
 

Leer las respuestas

#1 ulises
27/02/2004 - 17:26 | Informe spam
Lo que pasa es que en el área Mantenimiento tienes
tanto 'Administrativos' como 'Obreros', algo que no debes
tener en otras áreas, agrupalo y suma los valores, algo
como :

Select D.Nombre,
SUM(TAM = CASE C.Nombre
WHEN 'Administrativo' THEN CantidadMujeres ELSE 0
END), ...
...
GROUP BY D.Nombre

Saludos,
Ulises

Saludos amigos.


2. Estoy elaborando un reporte en Crystal Reports y como
todos sabemos es una buena herramienta de generación de
reportes siempre y cuando se le presente el la estructura
completa de lo que queremos mostrar. Entonces yo he
programado un procedimiento almacenado con un parámetro y
funciona perfecto en términos de que presenta la
información válida. El escenario es el siguiente:
tblDependencias Ejemplo: Consejo Superior,
Coordinación Académica, etc.
#Id
Nombre
,
tblTipoEmpleado Ejemplo: Solo dos tipos ->
Administrativo, Obrero.
#Id
Nombre
,
tblEstadísticas Ejemplo: 1,2,54,32
#Id
DependenciaId
TipoEmpleadoId
CantidadHombres
CantidadMujeres

El problema es que cuando hago la consulta en el
procedimiento almacenado me repite los regstros por
Dependencia y es lógico que lo haga porque así está
almacenado en la BD.

Esta es la consulta: Select D.Nombre,
TAM = CASE C.Nombre
WHEN 'Administrativo' THEN CantidadMujeres ELSE 0 END,
TAH = CASE C.Nombre
WHEN 'Administrativo' THEN CantidadHombres ELSE 0 END,
TOM = CASE C.Nombre
WHEN 'Obrero' THEN CantidadMujeres ELSE 0 END,
TOH = CASE C.Nombre
WHEN 'Obrero' THEN CantidadHombres ELSE 0 END,
B.*
From

EstunePlusAdministracionEstadisticas A
Join PERIODO B On
(A.PeriodoID = B.cod_periodo)
Join
EstunePlusAdministracionTiposPersonal C On
(A.TipoPersonalID = C.ID)
Join
EstunePlusAdministracionDependencias D On
(A.DependenciaID = D.ID)

La estructura que me arroja esta consulta es algo así
como esto:

Presidencia del Consejo Superior 1 0 0 0
Autoridades Rectorales 2 0 0 0
Consejo de Estudios de Postgrados 7 3 0 0
Directores de Escuelas 1 5 0 0
Directores de Organismos de Apoyo 0 7 0 0
Consultoría Jurídica 1 0 0 0
Dirección General Sede Centro 1 0 0 0
Coordinación General Sede Centro 0 1 0 0
Coordinadores Académicos 0 4 0 0
Coordinadores de Departamentos 3 3 0 0
Servicios Generales 8 22 0 0
Presidencia Centro de Tecnologías 1 0 0 0
Soporte Técnico CDT 7 1 0 0
Mantenimiento 1 0 0 0
Mantenimiento 0 0 7 4
Seguridad 0 0 7
0

Fíjense que "Mantenimiento" se repite. Para que el
Reporte en Crystas me muestre sin repetir necesitaría que
el resultado fuera:

Mantenimiento 1 0 7
4

Estas son el par de dudiñas que tengo, les agradezco
mucho su ayuda!

Gracias

José

.

Preguntas similares