UNPIVOT – Sql Server (Pasar de columnas a filas)
Para mostrar cómo funciona UNPIVOT creamos la siguiente tablas
CREATE TABLE [dbo].[TipoCambio](
[ano_mon] [int] DEFAULT ((0)),
[mes_mon] [int] DEFAULT ((0)),
[com_01] [decimal](18, 2) DEFAULT ((0)),
[vta_01] [decimal](18, 2) DEFAULT ((0)),
[com_02] [decimal](18, 2) DEFAULT ((0)),
[vta_02] [decimal](18, 2) DEFAULT ((0)),
[com_03] [decimal](18, 2) DEFAULT ((0)),
[vta_03] [decimal](18, 2) DEFAULT ((0)),
[com_04] [decimal](18, 2) DEFAULT ((0)),
[vta_04] [decimal](18, 2) DEFAULT ((0))
) ON [PRIMARY]
con este ejemplo mostraremos como pasar las columnas a filas:
Supongamos que tenemos una tabla tipo de cambio con los campos año, mes y 2 columnas por cada día (valor de compra y valor de venta) y queremos mostrar esta tabla en filas.
— Te muetra un tabla con el año , mes , día (Unpivot de compras)
SELECT ano_mon, mes_mon,dia, compra
FROM
(SELECT ano_mon,mes_mon ,com_01 ,com_02,com_03 FROM TipoCambio WHERE ano_mon = 2008 and mes_mon = 1) P
UNPIVOT (compra FOR dia IN (com_01 ,com_02,com_03)) AS Unpvt
GO
— Te muetra un tabla con el año , mes , día (Unpivot de ventas)
SELECT ano_mon, mes_mon,dia,venta
FROM
(SELECT ano_mon,mes_mon , vta_01 , vta_02 , vta_03 FROM TipoCambio WHERE ano_mon = 2008 and mes_mon = 1) P
UNPIVOT(venta FOR dia IN (vta_01 , vta_02 , vta_03)) AS Unpvt;
GO
Con este ejemplo se muestran la columna de compra y venta en una sola tabla :
SELECT * FROM(
SELECT ano_mon, mes_mon,diac,diav, compra ,venta
FROM
(SELECT ano_mon,mes_mon ,com_01 ,com_02,com_03,vta_01 , vta_02 , vta_03 FROM TipoCambio WHERE ano_mon = 2008 and mes_mon = 1) P
UNPIVOT (compra FOR diac IN (com_01 ,com_02,com_03))AS compra
UNPIVOT (venta FOR diav IN (vta_01 , vta_02 , vta_03))AS venta) AS RESULTADO
WHERE SUBSTRING(diac,5,2) = SUBSTRING(diav,5,2)
Algo mas sobre los reportes de foxpro (campos de la tabla)
Microsoft proporciona una DBF que contiene información sobre las tablas FRX.
Campo | OBJTYPE | Descripción |
---|---|---|
PLATFORM | Todos | Siempre «WINDOWS» |
UNIQUEID | Todos excepto: 0-Comment 23-Font 25-Data Environment 26-Data |
Es el identificador único de la mayoría de los registros. Puede utilizar SYS(2015) para crear un valor personalizado al agregar registros. |
TIMESTAMP | Todos excepto: 21-Printer driver (2.x) 23-Font 25-Data Environment 26-Data |
Información sobre cuándo fue modificado el registro por última vez. |
OBJTYPE | 0-49 reservados para uso nativo. 50-99 disponibles para uso del usuario. 0 = Comment 1 = Report Definition 2 = Work area (2.x reports) 3 = Index (2.x reports) 4 = Relations (2.x reports) 5 = Label 6 = Line 7 = Shape 8 = Field 9 = Band 10 = Grouped objects (no Data Groups) 17 = Picture / OLE Bound 18 = Variable 21 = Printer driver setup (2.x reports) 23 = Font 25 = Data Environment 26 = Data (Cursor, Relation, o cursor adapter) |
|
OBJCODE | Cuando el campo OBJTYPE no es suficiente para identificar un tipo de registro, se utiliza el campo OBJCODE para identificación adicional del registro. | |
1-Report Definition | Siempre 53. | |
2-Work area (2.x) | Área de trabajo de la tabla. | |
3-Index (2.x) | Área de trabajo del IDX. | |
4-Relation (2.x) | Área de trabajo de tabla hija. | |
5-Label 6-Line 8-Field 10-Group 17-Picture |
Siempre 0. | |
7-Shape | Siempre 4. | |
9-Band | Describe el tipo de banda: 0 = Title 1 = Page Header 2 = Column Header 3 = Group Header 4 = Detail 5 = Group Footer 6 = Column Footer 7 = Page Footer 8 = Summary 9 = Detail Header 10 = Detail Footer |
|
NAME | 2-Work area (2.x) | Nombre del archivo de la tabla. |
3-Index (2.x) | Nombre del archivo IDX. | |
8-Field | Encabezado en tiempo de diseño. | |
17-Picture | Si se define como Imagen desde archivo (Picture from File), y se selecciona un archivo de imagen (picture file), está en blanco. Si se define como Imagen desde archivo (Picture from File), y se introduce una expresión, contiene la expresión. Si se define como (Picture from Field), contiene el nombre del campo general. |
|
18-Variables | Nombre de las variables. | |
21-Printer driver (2.x) | Nombre de la impresora configurada. | |
25-Data Environment | «dataenvironment» | |
26-Data | «cursor» para cursores «relation» para relaciones «cursoradapter» para cursor adapters |
|
EXPR | 1-Report Definition | Información del Controlador de impresora (Printer driver) y la configuración de impresora. |
3-Index (2.x) | Expresión de orden. | |
4-Relation (2.x) | Expresión de relación. | |
5-Label | Texto de los objetos etiqueta (Label). | |
8-Field | Expresión de objeto campo (Field). | |
9-Band/Group Header | Expresión de Agrupación de datos (Data Group). | |
9-Band/Detail | Expresión de Alias destino. | |
18-Variables | Expresión de Almacenar valor (Value to store). | |
25-Data Environment 26-Data |
Propiedades del Entorno de datos o del objeto Data. | |
VPOS | 1-Report Definition | Cantidad de conjuntos de columnas. |
10-Group | Este número representa el primer objeto incluido en este grupo. Se basa en el Z-Order de los objetos del informe. Sin embargo, los objetos agrupados pueden pertenecer a otros objetos agrupados. Cuando ocurre esto, el grupo de objetos entero se cuenta únicamente una vez que se haya determinado este número. | |
23-Font | Altura de los caracteres, en pixels, FONTMETRIC(1). | |
Report objects | Posición vertical de los objetos, en FRUs. | |
HPOS | 1-Report Definition | Margen izquierdo, en FRUs. Relativo al margen de impresión si se selecciona Página imprimible (Printable page). Relativo al borde físico del papel si se selecciona Toda la página (Whole page). |
10-Group | Este número representa el total de objetos de informe en este grupo. Sin embargo si los objetos agrupados se incluyen en otro grupo, todo el grupo se cuenta como un único objeto. | |
23-Font | El ancho promedio de los caracteres en pixels, FONTMETRIC(6). | |
Report objects | Posición horizontal de los objetos en, FRUs. | |
HEIGHT | 1-Report Definition | Espacio entre columnas, en FRUs. |
9-Band | Altura de la banda, en FRUs. | |
23-Font | Lo que sube el carácter en pixels, FONTMETRIC(2). | |
Report objects | Altura de los objetos, en FRUs. | |
WIDTH | 1-Report Definition | Ancho de cada columna, en FRUs. |
9-Band/Detail 9-Band/Group Header |
Valor de Comenzar grupo en nueva página cuando se menor que (Start group on new page when less than) en el cuadro de diálogo Agrupr datos (Data Grouping) del cuadro de diálogo Detalle (Detail), en FRUs. | |
23-Font | Ancho máximo de caracteres en pixels, FONTMETRIC(7). | |
Report objects | Ancho de los objetos, en FRUs. | |
STYLE | 1-Report Definition | Si el informe utiliza una clase DataEnvironment o ha copiado el Entorno de datos de otro informe, contiene el XML con el entorno de datos. |
2.x report objects | B = Negrita – Bold I = Cursuva – Italic R = Sobreíndice – Raised L = Subíndice – Lowered J = Alineada a la derecha C = Alineada al centro |
|
PICTURE | 5-Label | Contiene el formato de alineación de los caracteres. |
8-Field | Expresión escrita en el cuadro de texto Formato (Format) en el cuadro de diálogo Expresión de informe (Report Expresión). Si se selecciona Interleave, la expresión de formato inicia con @R. | |
17-Picture | Si se definió como Picture from File, y se escogió un archivo de imagen, este contiene la ruta relativa y nombre del archivo. Si se definió como Picture from File, ay se introduce una expresión, está en blanco. Si se definió como Picture from Field, está en blanco. |
|
ORDER | Todosanterior a VFP 9.0 | No se utiliza. |
TodosVFP 9.0 | Continene un valor de caracteres que representa un valor numérico (las marcas binarias sumadas) para identificar niveles de protección. Objectos (bit, valor, significado) 0, 1, Lock (movido o redimensionado) 1, 2, Hide (visible) 2, 4, No eliminar 3, 8, No modificar 6, 64, No seleccionar Bandas (bit, valor, significado) 4, 16, No modificar 14, 16384, No redimensionar Informe (bit, valor, significado) 7, 128, No hacer presentación preliminar 8, 256, No permitir bandas opcionales 9, 512, No permitir agrupaciones de datos 10, 1024, No permitir variables 11, 2048, No mostrar Configurar página 12, 4096, No permitir selección múltiple 13, 8192, No mostrar Entorno de datos 15, 32768, No imprimir 16, 65536, No permitir Informe rápido |
|
UNIQUE | 1-Report Definition | .T. = Informe generado temporalmente por el asistente .F. = Informe permanente |
2-Work area (2.x) | .T. = Existe un índice activo para esta área de trabajo .F. = No existe un índice activo para esta área de trabajo |
|
18-Variable | Se corresponde con la casilla de verificación Liberar tras informe (Release after report) en el cuadro de diálogo Variables de informe (Report Variables). | |
COMMENT | Todos | Se corresponde con el cuadro de edición Comentarios (Comments). |
ENVIRON | 25-Data Environment | .T. = Sesión de datos Privada .F. = Sesión de datos Predeterminada |
BOXCHAR | Todos | No se utiliza |
FILLCHAR | 8-Field | C para campos de caracteres. N para campos numéricos. D para campos Fecha. |
TAG | 1-Report Definition | Información binaria del controlador de impresora. |
2-Work area (2.x) | Alias del área de trabajo. | |
9-Band | Valor de la expresión Al entrar (On Entry). | |
18-Variable | Valor inicial (Initial value). | |
25-Data Environment 26-Data |
Contiene el código de eventos y métodos. | |
TAG2 | 1-Report Definition | Información binaria del controlador de impresora. |
9-Band | Valor de la expresión Al salir (On Exit). | |
25-Data Environment 26-Data |
Contiene el código compilado de eventos y métodos. |
|
PENRED | 23-Font | Lo que baja el carácter en pixels, FONTMETRIC(3). |
Report objects | Color de primer plano Red como en RGB(). | |
PENGREEN | 23-Font | Margen extra en pixels, FONTMETRIC(5). |
Report objects | Color de primer plano Green como en RGB(). | |
PENBLUE | Report objects | Color de primer plano Blue como en RGB(). |
FILLRED | Report objects | Color de fondo Red como en in RGB(). |
FILLGREEN | Report objects | Color de fondo Green como en RGB(). |
FILLBLUE | Report objects | Color de fondo Blue como en RGB(). |
PENSIZE | 6-Line 7-Shape |
Tamaño del borde (cuando selecciona Borde (Pen) desde el menú Formato (Format) y escoge uno de los trazos de línea sólida). 0 = Trazo fino 1 = 1 Punto 2 = 2 Puntos 4 = 4 Puntos 6 = 6 Puntos El ancho completo de la línea no será visible a menos que altura HEIGHT o ancho WIDTH sea (PENSIZE x 104.167). Leer más… |