SQL - Creacion de Tablas - Datos Tecnicos

 
Vista:

Creacion de Tablas - Datos Tecnicos

Publicado por eduardo.v (10 intervenciones) el 08/02/2003 07:19:17
necesito crear una tabla que me maneje datos de referencia cruzadas los datos son los sigueintes fecha, dato y estado del dato la idea es que en una fecha determinada existen estaticamente 200 datos disponibles con su respectivo estado. entonces yo he encontrado 2 formas de crear la tabla:
1) lo convencional:
tabla1
---------
fecha (datetime) <-PK
dato(char) <-PK
estado(int)
2) lo practico:
tabla1
----------
fecha (datetime) <- PK
dato1 (int)
.
.
.
dato200 (int)
(el contenido de cada columna datox seria el estado)

PERO mi consulta viene con respecto a la rapidez y eficiencia del sql teniendo en cuenta que esta tabla seria de varias transacciones como se leeria mas rapido con varias filas y pocas columnas o con varias columnas y pocas filas. necesito saber esa informacion antes de tomar esta decision. GRacias y saludos desde Peru
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

RE:Creacion de Tablas - Datos Tecnicos

Publicado por Isaías Islas (5072 intervenciones) el 11/02/2003 03:06:23
Las referencias cruzadas se pueden sacar muy facilmente con la primera opcion, todo dependera del manejo de sus INDICES y del comando CASE.

Si necesita algun ejemplo de como emitir reportes de tipo Pivot Table, digame y le proporcionare algunos.

Acutalmente estoy emitiendo reportes de 13,000,000 millones de registros y me funciona bien.
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

RE:Creacion de Tablas - Datos Tecnicos

Publicado por eduardo.v (10 intervenciones) el 11/02/2003 19:11:25
Gracias solo queria saber cual era la forma mas eficiente pero si me dices que a ti te funciona bien entonces ahora no tengo problemas en usar la primera opcion.
Y la verdad si me interesaria algun ejemplo de pivot table. Pero de por si gracias por la respuesta.
Saludos desde Peru 'Cuna del verdadero Pisco'
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

RE:Creacion de Tablas - Datos Tecnicos

Publicado por Isaías Islas (5072 intervenciones) el 11/02/2003 20:16:31
Con gusto, mira este ejemplo SUMA las llamadas de TELMEX (TELEFONOS DE MEXICO) que se han procesado por ciertos meses, el cruce es, FECHA de la LLAMADA, contra FECHA de la FACTURACION.

SELECT Pivot_Data.*,
(Pivot_Data.[200202] + Pivot_Data.[200203] + Pivot_Data.[200204]+
Pivot_Data.[200205]+Pivot_Data.[200206]+Pivot_Data.[200207]+
Pivot_Data.[200208]+Pivot_Data.[200209]+Pivot_Data.[200210]+
Pivot_Data.[200211]+Pivot_Data.[200212]) AS Total
FROM (SELECT LEFT(FECHA,6) AS FECHA,
SUM(CASE [MES_FACT] WHEN '200202' THEN 1 ELSE 0 END) AS [200202],
SUM(CASE [MES_FACT] WHEN '200203' THEN 1 ELSE 0 END) AS [200203],
SUM(CASE [MES_FACT] WHEN '200204' THEN 1 ELSE 0 END) AS [200204],
SUM(CASE [MES_FACT] WHEN '200205' THEN 1 ELSE 0 END) AS [200205],
SUM(CASE [MES_FACT] WHEN '200206' THEN 1 ELSE 0 END) AS [200206],
SUM(CASE [MES_FACT] WHEN '200207' THEN 1 ELSE 0 END) AS [200207],
SUM(CASE [MES_FACT] WHEN '200208' THEN 1 ELSE 0 END) AS [200208],
SUM(CASE [MES_FACT] WHEN '200209' THEN 1 ELSE 0 END) AS [200209],
SUM(CASE [MES_FACT] WHEN '200210' THEN 1 ELSE 0 END) AS [200210],
SUM(CASE [MES_FACT] WHEN '200211' THEN 1 ELSE 0 END) AS [200211],
SUM(CASE [MES_FACT] WHEN '200212' THEN 1 ELSE 0 END) AS [200212]
FROM (select * from AJUSTE_TELMEX WHERE RIGHT(DNIS,4) IN (4933,4923,4943,3150,3100,3120,3500,2050,0020) AND COMPAÑIA = '017') AS Base_Data%0
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

RE:Creacion de Tablas - Datos Tecnicos

Publicado por Isaías Islas (5072 intervenciones) el 11/02/2003 20:18:36
Este es el complemento:

AS Base_Data
GROUP BY LEFT(FECHA,6)) AS Pivot_Data
ORDER BY LEFT(FECHA,6)

Saludos desde México, D.F.
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