{"id":1105,"date":"2013-03-07T14:22:31","date_gmt":"2013-03-07T13:22:31","guid":{"rendered":"http:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/?p=1105"},"modified":"2015-12-15T14:35:46","modified_gmt":"2015-12-15T13:35:46","slug":"creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot","status":"publish","type":"post","link":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot","title":{"rendered":"Creaci\u00f3n de informes de referencias cruzadas en SQL Server. El Operador PIVOT."},"content":{"rendered":"<p>A veces es necesario girar resultados de modo que, los datos en columnas se presentan en sentido horizontal y los datos en filas se presentan en forma vertical. Esto se conoce como la creaci\u00f3n de una tabla din\u00e1mica \u00ae, creando un informe de referencias cruzadas, o rotaci\u00f3n de datos.<\/p>\n<p>En primer lugar vamos a comenzar poniendo un ejemplo de c\u00f3mo se deb\u00eda realizar algo similar, aunque con mucha menos potencia en SQL Server 2000, en el que no dispon\u00edamos del operador PIVOT y donde ten\u00edamos que realizarlo mediante la funci\u00f3n CASE.<\/p>\n<p>Supongamos que disponemos de una estructura t\u00edpica maestro detalle con las tablas Orders, Order Details y deseamos un informe similar al siguiente:<\/p>\n<p>Ventas por a\u00f1o<\/p>\n<table width=\"100%\" border=\"1\">\n<tbody>\n<tr>\n<th scope=\"col\"><\/th>\n<th scope=\"col\">Ene<\/th>\n<th scope=\"col\">Feb<\/th>\n<th scope=\"col\">Mar<\/th>\n<th scope=\"col\">Abr<\/th>\n<th scope=\"col\">May<\/th>\n<th scope=\"col\">Jun<\/th>\n<th scope=\"col\">Jul<\/th>\n<th scope=\"col\">Ago<\/th>\n<th scope=\"col\">Sep<\/th>\n<th scope=\"col\">Oct<\/th>\n<th scope=\"col\">Nov<\/th>\n<th scope=\"col\">Dic<\/th>\n<\/tr>\n<tr>\n<td>2000<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>2001<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>2002<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>&#8230;<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>La informaci\u00f3n que queremos mostrar, ya agrupada, la podemos obtener con la siguiente instrucci\u00f3n SELECT, aunque no en el formato que la necesitamos mostrar:<\/p>\n<pre lang=\"tsql\">select year(O.OrderDate), month(O.OrderDate) as Mes, sum(D.Quantity) as Cantidad\r\nfrom [Order Details] D inner join Orders O on D.OrderID = O.OrderID\r\nwhere year(O.OrderDate) &gt; 2000\r\ngroup by P.ProductName, month(O.OrderDate)\r\norder by 1, 2<\/pre>\n<p>El resultado obtenido es:<\/p>\n<table width=\"200\" border=\"1\">\n<tbody>\n<tr>\n<th scope=\"col\">Producto<\/th>\n<th scope=\"col\">Mes<\/th>\n<th scope=\"col\">Cantidad<\/th>\n<\/tr>\n<tr>\n<td>2000<\/td>\n<td>1<\/td>\n<td>97<\/td>\n<\/tr>\n<tr>\n<td>2000<\/td>\n<td>2<\/td>\n<td>10<\/td>\n<\/tr>\n<tr>\n<td>2000<\/td>\n<td>3<\/td>\n<td>73<\/td>\n<\/tr>\n<tr>\n<td>2000<\/td>\n<td>4<\/td>\n<td>34<\/td>\n<\/tr>\n<tr>\n<td>&#8230;.<\/td>\n<td>..<\/td>\n<td>..<\/td>\n<\/tr>\n<tr>\n<td>2001<\/td>\n<td>1<\/td>\n<td>55<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ahora, si queremos mostrarlo seg\u00fan el formato que hemos definido anteriormente, y estamos utilizando SQL Server 2000, tenemos que recurrir a la funci\u00f3n CASE, como se muestra a continuaci\u00f3n:<\/p>\n<pre lang=\"tsql\">select year(O.OrderDate),\r\nsum(CASE WHEN month(O.OrderDate) = 1 THEN D.Quantity ELSE 0 END) AS Ene,\r\nsum(CASE WHEN month(O.OrderDate) = 2 THEN D.Quantity ELSE 0 END) AS Feb,\r\nsum(CASE WHEN month(O.OrderDate) = 3 THEN D.Quantity ELSE 0 END) AS Mar,\r\nsum(CASE WHEN month(O.OrderDate) = 4 THEN D.Quantity ELSE 0 END) AS Abr,\r\nsum(CASE WHEN month(O.OrderDate) = 5 THEN D.Quantity ELSE 0 END) AS May,\r\nsum(CASE WHEN month(O.OrderDate) = 6 THEN D.Quantity ELSE 0 END) AS Jun,\r\nsum(CASE WHEN month(O.OrderDate) = 7 THEN D.Quantity ELSE 0 END) AS Jul,\r\nsum(CASE WHEN month(O.OrderDate) = 8 THEN D.Quantity ELSE 0 END) AS Ago,\r\nsum(CASE WHEN month(O.OrderDate) = 9 THEN D.Quantity ELSE 0 END) AS Sep,\r\nsum(CASE WHEN month(O.OrderDate) = 10 THEN D.Quantity ELSE 0 END) AS Oct,\r\nsum(CASE WHEN month(O.OrderDate) = 11 THEN D.Quantity ELSE 0 END) AS Nov,\r\nsum(CASE WHEN month(O.OrderDate) = 12 THEN D.Quantity ELSE 0 END) AS Dic\r\nfrom [Order Details] D inner join Orders O on D.OrderID = O.OrderID\r\nwhere O.OrderDate between '20000101' and '20101231'\r\ngroup by year(O.OrderDate)\r\norder by 1<\/pre>\n<p>El resultado obtenido es:<\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 0pt; line-height: normal;\"><span style=\"font-size: 10pt; font-family: 'Courier New';\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Ene Feb Mar\u00a0 Abr <span class=\"SpellE\">May<\/span> Jun\u00a0 Jul <span class=\"SpellE\">Ago<\/span>\u00a0 <span class=\"SpellE\">Sep<\/span> Oct Nov Dic<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 0pt; line-height: normal;\"><span style=\"font-size: 10pt; font-family: 'Courier New';\" lang=\"EN-GB\" xml:lang=\"EN-GB\">2000<span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span>\u00a0 97<span class=\"GramE\">\u00a0 10<\/span>\u00a0\u00a0 0\u00a0\u00a0\u00a0 0\u00a0 73\u00a0 34\u00a0 100\u00a0\u00a0 0\u00a0\u00a0 30\u00a0 55\u00a0 20 108<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 0pt; line-height: normal;\"><span style=\"font-size: 10pt; font-family: 'Courier New';\">2001<span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>50\u00a0\u00a0 0\u00a0 20 \u00a0\u00a0\u00a00\u00a0 60\u00a0\u00a0 0\u00a0\u00a0 14\u00a0\u00a0 0\u00a0\u00a0\u00a0 0\u00a0\u00a0 6\u00a0 20\u00a0 20<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 0pt; line-height: normal;\"><span style=\"font-size: 10pt; font-family: 'Courier New';\">2002<span>\u00a0\u00a0\u00a0 <\/span><span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span>\u00a0 <\/span>52\u00a0 20\u00a0 61\u00a0\u00a0 30\u00a0 35\u00a0 52\u00a0\u00a0 42\u00a0 60\u00a0 144\u00a0\u00a0 0\u00a0 99\u00a0\u00a0 1<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 0pt; line-height: normal;\"><span style=\"font-size: 10pt; font-family: 'Courier New';\">2003<span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span>60\u00a0\u00a0 0\u00a0 60\u00a0 106\u00a0 35\u00a0 24\u00a0 125\u00a0 30\u00a0 135\u00a0 10\u00a0 65\u00a0 15<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 0pt; line-height: normal;\"><span style=\"font-size: 10pt; font-family: 'Courier New';\">&#8230;<\/span><\/p>\n<p>Si ya disponemos de SQL Server 2005 o posteriores, entonces tendremos disponible una nueva funcionalidad que nos permite realizar de forma m\u00e1s sencilla este tipo de tareas. Esta funcionalidad nos la ofrece el operador PIVOT (en otra ocasi\u00f3n hablaremos del operador UNPIVOT). PIVOT nos permite convertir filas en columnas. Lo podemos incluir en la cl\u00e1usula FROM de nuestras instrucciones SELECT.<\/p>\n<pre lang=\"tsql\">select anio, [1] Ene, [2] Feb, [3] Mar, [4] Abr, [5] May, [6] Jun,\r\n[7] Jul, [8] Ago, [9] Sep, [10] Oct, [11] Nov, [12] Dic\r\nfrom (\r\n-- select inicial, a pivotar. Podr\u00eda ser una tabla\r\nselect year(O.OrderDate) as anio, month(O.OrderDate) as Mes,\r\nD.Quantity as Cantidad\r\nfrom [Order Details] D inner join Orders O on D.OrderID = O.OrderID\r\nwhere O.OrderDate between '20000101' and '20101231'\r\n) V PIVOT ( sum(Cantidad) FOR Mes IN ([1], [2], [3], [4], [5],\r\n[6], [7], [8], [9], [10], [11], [12]) ) as PT<\/pre>\n<p>Como pod\u00e9is comprobar, simplemente tenemos que usar la funci\u00f3n PIVOT, a la cual le indicamos una funci\u00f3n de agregado, la columna que queremos girar (pivotar) y desglosamos las columnas en las que queremos mostrar la informaci\u00f3n, esto nos permite utilizar ese desglose realizado como cualquier otra columna m\u00e1s en nuestra instrucci\u00f3n SELECT. La funci\u00f3n PIVOT nos permite girar (pivotar), convirtiendo los valores \u00fanicos de una columna en varias columnas de salida, y realizando agregaciones para dichos valores.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A veces es necesario girar resultados de modo que, los datos en columnas se presentan en sentido horizontal y los datos en filas se presentan en forma vertical. Esto se conoce como la creaci\u00f3n&#46;&#46;&#46;<\/p>\n","protected":false},"author":70,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"class_list":["post-1105","post","type-post","status-publish","format-standard","hentry","category-redes-sistemas-y-seguridad"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Creaci\u00f3n de informes de referencias cruzadas en SQL Server. El Operador PIVOT.<\/title>\n<meta name=\"description\" content=\"A veces es necesario girar resultados de modo que, los datos en columnas se presentan en sentido horizontal y los datos en filas se presentan en forma\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creaci\u00f3n de informes de referencias cruzadas en SQL Server. El Operador PIVOT.\" \/>\n<meta property=\"og:description\" content=\"A veces es necesario girar resultados de modo que, los datos en columnas se presentan en sentido horizontal y los datos en filas se presentan en forma\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot\" \/>\n<meta property=\"og:site_name\" content=\"Canal Inform\u00e1tica y TICS\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/InesemBusinessSchool\/\" \/>\n<meta property=\"article:published_time\" content=\"2013-03-07T13:22:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-12-15T13:35:46+00:00\" \/>\n<meta name=\"author\" content=\"Juan Iruela\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@inesem\" \/>\n<meta name=\"twitter:site\" content=\"@inesem\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Juan Iruela\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot\"},\"author\":{\"name\":\"Juan Iruela\",\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#\/schema\/person\/3e3c2ff598dcbfd18aef8da3a40b71df\"},\"headline\":\"Creaci\u00f3n de informes de referencias cruzadas en SQL Server. El Operador PIVOT.\",\"datePublished\":\"2013-03-07T13:22:31+00:00\",\"dateModified\":\"2015-12-15T13:35:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot\"},\"wordCount\":375,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#organization\"},\"keywords\":[\"SQL Server\",\"Transact SQL\"],\"articleSection\":[\"Redes, Sistemas y Seguridad\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot\",\"url\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot\",\"name\":\"Creaci\u00f3n de informes de referencias cruzadas en SQL Server. El Operador PIVOT.\",\"isPartOf\":{\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#website\"},\"datePublished\":\"2013-03-07T13:22:31+00:00\",\"dateModified\":\"2015-12-15T13:35:46+00:00\",\"description\":\"A veces es necesario girar resultados de modo que, los datos en columnas se presentan en sentido horizontal y los datos en filas se presentan en forma\",\"breadcrumb\":{\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Redes, Sistemas y Seguridad\",\"item\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/categorias\/redes-sistemas-y-seguridad\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Creaci\u00f3n de informes de referencias cruzadas en SQL Server. El Operador PIVOT.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#website\",\"url\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/\",\"name\":\"Canal Inform\u00e1tica y TICS\",\"description\":\"Canal de Noticias gestionado por el Departamento Docente de Inform\u00e1tica y TICS de INESEM\",\"publisher\":{\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#organization\",\"name\":\"Canal Inform\u00e1tica y TICS\",\"url\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#\/schema\/logo\/image\/\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Canal Inform\u00e1tica y TICS\"},\"image\":{\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/InesemBusinessSchool\/\",\"https:\/\/x.com\/inesem\",\"http:\/\/www.linkedin.com\/company\/2370697\",\"https:\/\/www.youtube.com\/user\/inesembusinesschool\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#\/schema\/person\/3e3c2ff598dcbfd18aef8da3a40b71df\",\"name\":\"Juan Iruela\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.inesem.es\/revistadigital\/comercio-hosteleria-turismo\/wp-content\/blogs.dir\/6\/files\/2013\/09\/Juan-Iruela_avatar.jpg\",\"contentUrl\":\"https:\/\/www.inesem.es\/revistadigital\/comercio-hosteleria-turismo\/wp-content\/blogs.dir\/6\/files\/2013\/09\/Juan-Iruela_avatar.jpg\",\"caption\":\"Juan Iruela\"},\"description\":\"Ingeniero T\u00e9cnico en Inform\u00e1tica por la Universidad de Granada. C.A.P. por la Universidad de Granada. Formador de Formadores y Formador de Formadores Especialidad Tele formaci\u00f3n. Microsoft Certified Solution Developer en Visual Studio .NET. Certificado en CISCO, Oracle y Linux. Profesor en el departamento de Nuevas tecnolog\u00edas de INESEM.\",\"url\":\"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/autores\/juan-iruela\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Creaci\u00f3n de informes de referencias cruzadas en SQL Server. El Operador PIVOT.","description":"A veces es necesario girar resultados de modo que, los datos en columnas se presentan en sentido horizontal y los datos en filas se presentan en forma","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot","og_locale":"es_ES","og_type":"article","og_title":"Creaci\u00f3n de informes de referencias cruzadas en SQL Server. El Operador PIVOT.","og_description":"A veces es necesario girar resultados de modo que, los datos en columnas se presentan en sentido horizontal y los datos en filas se presentan en forma","og_url":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot","og_site_name":"Canal Inform\u00e1tica y TICS","article_publisher":"https:\/\/www.facebook.com\/InesemBusinessSchool\/","article_published_time":"2013-03-07T13:22:31+00:00","article_modified_time":"2015-12-15T13:35:46+00:00","author":"Juan Iruela","twitter_card":"summary_large_image","twitter_creator":"@inesem","twitter_site":"@inesem","twitter_misc":{"Escrito por":"Juan Iruela","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot#article","isPartOf":{"@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot"},"author":{"name":"Juan Iruela","@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#\/schema\/person\/3e3c2ff598dcbfd18aef8da3a40b71df"},"headline":"Creaci\u00f3n de informes de referencias cruzadas en SQL Server. El Operador PIVOT.","datePublished":"2013-03-07T13:22:31+00:00","dateModified":"2015-12-15T13:35:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot"},"wordCount":375,"commentCount":0,"publisher":{"@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#organization"},"keywords":["SQL Server","Transact SQL"],"articleSection":["Redes, Sistemas y Seguridad"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot","url":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot","name":"Creaci\u00f3n de informes de referencias cruzadas en SQL Server. El Operador PIVOT.","isPartOf":{"@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#website"},"datePublished":"2013-03-07T13:22:31+00:00","dateModified":"2015-12-15T13:35:46+00:00","description":"A veces es necesario girar resultados de modo que, los datos en columnas se presentan en sentido horizontal y los datos en filas se presentan en forma","breadcrumb":{"@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/creacion-de-informes-de-referencias-cruzadas-en-sql-server-el-operador-pivot#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/"},{"@type":"ListItem","position":2,"name":"Redes, Sistemas y Seguridad","item":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/categorias\/redes-sistemas-y-seguridad"},{"@type":"ListItem","position":3,"name":"Creaci\u00f3n de informes de referencias cruzadas en SQL Server. El Operador PIVOT."}]},{"@type":"WebSite","@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#website","url":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/","name":"Canal Inform\u00e1tica y TICS","description":"Canal de Noticias gestionado por el Departamento Docente de Inform\u00e1tica y TICS de INESEM","publisher":{"@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#organization","name":"Canal Inform\u00e1tica y TICS","url":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#\/schema\/logo\/image\/","url":"","contentUrl":"","caption":"Canal Inform\u00e1tica y TICS"},"image":{"@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/InesemBusinessSchool\/","https:\/\/x.com\/inesem","http:\/\/www.linkedin.com\/company\/2370697","https:\/\/www.youtube.com\/user\/inesembusinesschool\/"]},{"@type":"Person","@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#\/schema\/person\/3e3c2ff598dcbfd18aef8da3a40b71df","name":"Juan Iruela","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/#\/schema\/person\/image\/","url":"https:\/\/www.inesem.es\/revistadigital\/comercio-hosteleria-turismo\/wp-content\/blogs.dir\/6\/files\/2013\/09\/Juan-Iruela_avatar.jpg","contentUrl":"https:\/\/www.inesem.es\/revistadigital\/comercio-hosteleria-turismo\/wp-content\/blogs.dir\/6\/files\/2013\/09\/Juan-Iruela_avatar.jpg","caption":"Juan Iruela"},"description":"Ingeniero T\u00e9cnico en Inform\u00e1tica por la Universidad de Granada. C.A.P. por la Universidad de Granada. Formador de Formadores y Formador de Formadores Especialidad Tele formaci\u00f3n. Microsoft Certified Solution Developer en Visual Studio .NET. Certificado en CISCO, Oracle y Linux. Profesor en el departamento de Nuevas tecnolog\u00edas de INESEM.","url":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/autores\/juan-iruela"}]}},"autor_name":{"name":"Juan Iruela"},"featured_image":{"attachment_meta":{"sizes":null}},"_links":{"self":[{"href":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/wp-json\/wp\/v2\/posts\/1105"}],"collection":[{"href":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/wp-json\/wp\/v2\/users\/70"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/wp-json\/wp\/v2\/comments?post=1105"}],"version-history":[{"count":0,"href":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/wp-json\/wp\/v2\/posts\/1105\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/wp-json\/wp\/v2\/media?parent=1105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inesem.es\/revistadigital\/informatica-y-tics\/wp-json\/wp\/v2\/categories?post=1105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}