{"id":2283,"date":"2020-11-08T00:10:55","date_gmt":"2020-11-08T00:10:55","guid":{"rendered":"http:\/\/manualsqlserver.com\/?p=2283"},"modified":"2020-11-08T00:10:56","modified_gmt":"2020-11-08T00:10:56","slug":"grouping-sets-en-sql-server","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=2283","title":{"rendered":"Grouping Sets en SQL Server"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"260\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets__D.png\" alt=\"\" class=\"wp-image-2284\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Uso de Grouping Sets en SQL Server<\/h2>\n\n\n\n<p>Los agrupamiento en SQL Server permiten mostrar un conjunto de resultados donde una o mas columnas que se muestran es el resultado del uso de alguna de las funciones de agregado que calculan suma, promedio,<br>m\u00e1ximo, m\u00ednimo, etc.<br>Si se desea mostrar mas de un agrupamiento en el mismo conjunto de resultado se deber\u00e1 usar los Grouping Sets, estos son similares al uso del operador Union All. En este art\u00edculo se desea explicar como se usa la opci\u00f3n<br>Grouping Sets para mostrar m\u00faltiples resultados de agrupamientos en la misma instrucci\u00f3n. Adicionalmente se muestra como se usa la funci\u00f3n Grouping.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p style=\"font-size:22px\"><strong>Para mayor informaci\u00f3n ver<\/strong><\/p>\n\n\n\n<p style=\"font-size:18px\"><a rel=\"noreferrer noopener\" href=\"https:\/\/manualsqlserver.com\/?p=207\" target=\"_blank\">Funciones de agregado<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/manualsqlserver.com\/?p=225\" target=\"_blank\">Agrupamientos en SQL Server<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/manualsqlserver.com\/?p=2143\" target=\"_blank\">Cl\u00e1usula Union en consultas<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/manualsqlserver.com\/?p=211\" target=\"_blank\">Ordenamientos en SQL Server<\/a><br><a href=\"https:\/\/manualsqlserver.com\/?p=289\" target=\"_blank\" rel=\"noreferrer noopener\">Generar una tabla usando Select into<\/a><br><a href=\"https:\/\/manualsqlserver.com\/?p=310\" target=\"_blank\" rel=\"noreferrer noopener\">Vistas en SQL Server<\/a><\/p>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><strong>Usando la base de datos Northwind<\/strong><br>use Northwind<br>go<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Usando Union All<\/strong><\/p>\n\n\n\n<p>El uso de Union all permite unir varias consultas en una agrupando varios resultados en uno solo. Se va a crear cuatro consultas, las que despu\u00e9s usando Union All se mostrar\u00e1n en un s\u00f3lo conjunto de resultado.<\/p>\n\n\n\n<p><strong>Consulta 1: Unidades totales vendidas por categor\u00eda.<\/strong><br>Select C.CategoryName As &#8216;Categor\u00eda&#8217;,<br>sum(D.Quantity) As &#8216;Total&#8217;<br>from [Order Details] As D<br>join Products As P on D.ProductID = P.ProductID<br>join Categories As C on P.CategoryID = C.CategoryID<br>group by C.CategoryName<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_01.png\" alt=\"\" class=\"wp-image-2285\" width=\"437\" height=\"527\"\/><\/figure>\n\n\n\n<p><strong>Consulta 2: Ventas totales en unidades por Empleado<\/strong><br>Select Empleado = CONCAT_WS(&#8216; &#8216;,E.FirstName, E.LastName) ,<br>sum(D.Quantity) As &#8216;Total&#8217;<br>from [Order Details] As D<br>join Products As P on D.ProductID = P.ProductID<br>join Orders As O on D.OrderID = O.OrderID<br>join Employees As E on O.EmployeeID = E.EmployeeID<br>group by CONCAT_WS(&#8216; &#8216;,E.FirstName, E.LastName)<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_02.png\" alt=\"\" class=\"wp-image-2286\" width=\"458\" height=\"444\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_02.png 321w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_02-300x291.png 300w\" sizes=\"auto, (max-width: 458px) 100vw, 458px\" \/><\/figure>\n\n\n\n<p><strong>Consulta 3: Las compras totales en unidades por Cliente<\/strong><br>Select C.CompanyName As &#8216;Cliente&#8217;,<br>sum(D.Quantity) As &#8216;Total&#8217;<br>from [Order Details] As D<br>join Products As P on D.ProductID = P.ProductID<br>join Orders As O on D.OrderID = O.OrderID<br>join Customers As C on O.CustomerID= C.CustomerID<br>group by C.CompanyName<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_03.png\" alt=\"\" class=\"wp-image-2287\" width=\"496\" height=\"860\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_03.png 383w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_03-173x300.png 173w\" sizes=\"auto, (max-width: 496px) 100vw, 496px\" \/><\/figure>\n\n\n\n<p><strong>Consulta 4: Ventas totales<\/strong><br>Select sum(D.Quantity) As &#8216;Total&#8217;<br>from [Order Details] As D<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_04.png\" alt=\"\" class=\"wp-image-2288\" width=\"379\" height=\"190\"\/><\/figure>\n\n\n\n<p style=\"font-size:22px\"><strong>Usando Union All<\/strong><\/p>\n\n\n\n<p><strong>Las instrucciones anteriores podemos mostrarlas en un s\u00f3lo conjunto de resultados.<\/strong><\/p>\n\n\n\n<p>Select C.CategoryName As &#8216;Item&#8217;,<br>sum(D.Quantity) As &#8216;Total&#8217;<br>from [Order Details] As D<br>join Products As P on D.ProductID = P.ProductID<br>join Categories As C on P.CategoryID = C.CategoryID<br>group by C.CategoryName<br>Union All<br>Select CONCAT_WS(&#8216; &#8216;,E.FirstName, E.LastName) As &#8216;Item&#8217;,<br>sum(D.Quantity) As &#8216;Total&#8217;<br>from [Order Details] As D<br>join Products As P on D.ProductID = P.ProductID<br>join Orders As O on D.OrderID = O.OrderID<br>join Employees As E on O.EmployeeID = E.EmployeeID<br>group by CONCAT_WS(&#8216; &#8216;,E.FirstName, E.LastName)<br>Union All<br>Select C.CompanyName As &#8216;Item&#8217;,<br>sum(D.Quantity) As &#8216;Total&#8217;<br>from [Order Details] As D<br>join Products As P on D.ProductID = P.ProductID<br>join Orders As O on D.OrderID = O.OrderID<br>join Customers As C on O.CustomerID= C.CustomerID<br>group by C.CompanyName<br>Union All<br>Select &#8216;Total General&#8217; As &#8216;Item&#8217;, sum(D.Quantity) As &#8216;Total&#8217;<br>from [Order Details] As D<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_05.png\" alt=\"\" class=\"wp-image-2289\" width=\"589\" height=\"1205\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_05.png 395w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_05-147x300.png 147w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p style=\"font-size:18px\"><strong>Es importante anotar que posiblemente el resultado no sea adecuado para mostrarlo en un s\u00f3lo conjunto de resultados. La idea del ejercicio es mostrar el uso de Union All para mostrar varios resultados en un s\u00f3lo conjunto, lo que se va a explicar en el uso de Grouping Sets.<\/strong><\/p>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p style=\"font-size:22px\"><strong>Usando Grouping Sets<\/strong><\/p>\n\n\n\n<p>Para el uso de Grouping sets se va a crear una tabla con los datos necesarios. Por cada empleado y por categor\u00edas, se va a calcular el total de ventas por a\u00f1o. <br>Revise y considere la opci\u00f3n de generar una vista, es importante el uso de la vista porque los datos se actualizan a diferencia de la tabla creada que no se actualiza.<\/p>\n\n\n\n<p style=\"font-size:18px\"><strong>Generando la tabla llamada TotalesVentasEmpleadoA\u00f1oCategoria.<\/strong><\/p>\n\n\n\n<p>select<br>CONCAT_WS(&#8216; &#8216;,E.FirstName, E.LastName) As &#8216;Empleado&#8217;,<br>C.CategoryName As &#8216;Categor\u00eda&#8217;,<br>Year(O.OrderDate) As &#8216;A\u00f1o&#8217;,<br>SUM(D.Quantity * D.UnitPrice) As &#8216;Total&#8217;<br>into TotalesVentasEmpleadoA\u00f1oCategoria<br>from Employees As E<br>join Orders As O on E.EmployeeID = O.EmployeeID<br>Join [Order Details] As D on O.OrderID = D.OrderID<br>join Products As P on D.ProductID = P.ProductID<br>join Categories As C on P.CategoryID = C.CategoryID<br>Group by<br>CONCAT_WS(&#8216; &#8216;,E.FirstName, E.LastName),<br>C.CategoryName, Year(O.OrderDate)<br>Order by<br>CONCAT_WS(&#8216; &#8216;,E.FirstName, E.LastName),<br>C.CategoryName, Year(O.OrderDate)<br>go<\/p>\n\n\n\n<p><strong>Listado de los registros de la tabla creada<\/strong><br>select * from TotalesVentasEmpleadoA\u00f1oCategoria<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_06.png\" alt=\"\" class=\"wp-image-2290\" width=\"670\" height=\"973\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_06.png 575w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_06-207x300.png 207w\" sizes=\"auto, (max-width: 670px) 100vw, 670px\" \/><\/figure>\n\n\n\n<p>Para mostrar el uso de grouping sets se van a constriur cuatro diferentes consultas las que se mostrar\u00e1n de manera individual primero, luego usando Grouping Sets se mostrar\u00e1n agrupadas.<\/p>\n\n\n\n<p><strong>Consulta 1: Ventas totales por categor\u00eda<\/strong><br>Select<br>T.Categor\u00eda,<br>Sum(T.Total) As &#8216;Total&#8217;<br>from TotalesVentasEmpleadoA\u00f1oCategoria As T<br>group by T.Categor\u00eda<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_07.png\" alt=\"\" class=\"wp-image-2291\" width=\"452\" height=\"468\"\/><\/figure>\n\n\n\n<p><strong>Consulta 2: Total de ventas por empleado.<\/strong><br>Select<br>T.Empleado,<br>Sum(T.Total) As &#8216;Total&#8217;<br>from TotalesVentasEmpleadoA\u00f1oCategoria As T<br>group by T.Empleado<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_08.png\" alt=\"\" class=\"wp-image-2292\" width=\"458\" height=\"436\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_08.png 350w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_08-300x285.png 300w\" sizes=\"auto, (max-width: 458px) 100vw, 458px\" \/><\/figure>\n\n\n\n<p><strong>Consulta 3: Total de ventas por empleado y por categor\u00eda.<\/strong><br>Select<br>T.Empleado, T.Categor\u00eda,<br>Sum(T.Total) As &#8216;Total&#8217;<br>from TotalesVentasEmpleadoA\u00f1oCategoria As T<br>group by T.Empleado, T.Categor\u00eda<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_09.png\" alt=\"\" class=\"wp-image-2293\" width=\"576\" height=\"1009\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_09.png 476w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_09-171x300.png 171w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/figure>\n\n\n\n<p><strong>Consulta 4: Total de ventas general<\/strong><br>Select<br>Sum(T.Total) As &#8216;Total&#8217;<br>from TotalesVentasEmpleadoA\u00f1oCategoria As T<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_10.png\" alt=\"\" class=\"wp-image-2294\" width=\"359\" height=\"182\"\/><\/figure>\n\n\n\n<p class=\"has-background\" style=\"background-color:#bbdbe9\"><strong>Note que en las cuatro consultas anteriores se ha especificado agrupamientos, estos cuatro agrupamientos son:<br><\/strong>T.Categor\u00eda<br>T.Empleado<br>T.Empleado, T.Categor\u00eda<br>La \u00faltima no tiene Group by porque no existe campo en el listado sin funci\u00f3n de agregado.<\/p>\n\n\n\n<p style=\"font-size:18px\"><strong>Usando el operador Union All<\/strong><\/p>\n\n\n\n<p>Select<br>T.Categor\u00eda As &#8216;Categor\u00eda&#8217;,<br>\u00bb As Empleado,<br>Sum(T.Total) As &#8216;Total&#8217;<br>from TotalesVentasEmpleadoA\u00f1oCategoria As T<br>group by T.Categor\u00eda<br>Union All<br>Select \u00bb As &#8216;Categor\u00eda&#8217;,<br>T.Empleado As &#8216;Empleado&#8217;,<br>Sum(T.Total) As &#8216;Total&#8217;<br>from TotalesVentasEmpleadoA\u00f1oCategoria As T<br>group by T.Empleado<br>Union All<br>Select<br>T.Categor\u00eda As &#8216;Categor\u00eda&#8217;,<br>T.Empleado As &#8216;Empleado&#8217;,<br>Sum(T.Total) As &#8216;Total&#8217;<br>from TotalesVentasEmpleadoA\u00f1oCategoria As T<br>group by T.Categor\u00eda, T.Empleado<br>Union All<br>Select<br>\u00bb As &#8216;Categor\u00eda&#8217;,<br>\u00bb As &#8216;Empleado&#8217;,<br>Sum(T.Total) As &#8216;Total&#8217;<br>from TotalesVentasEmpleadoA\u00f1oCategoria As T<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_11.png\" alt=\"\" class=\"wp-image-2295\" width=\"604\" height=\"1085\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_11.png 525w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_11-167x300.png 167w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/figure>\n\n\n\n<p style=\"font-size:18px\"><strong>La misma instrucci\u00f3n usando Grouping Sets<\/strong><\/p>\n\n\n\n<p>Select isnull(T.Categor\u00eda,\u00bb) As &#8216;Categor\u00eda&#8217;,<br>isnull(T.Empleado,\u00bb) As &#8216;Empleado&#8217;,<br>Sum(T.Total) As &#8216;Total&#8217;<br>from TotalesVentasEmpleadoA\u00f1oCategoria As T<br>Group by<br><strong>Grouping Sets<br>(<br>(T.Categor\u00eda),<br>(T.Empleado),<br>(T.Categor\u00eda, T.Empleado),<br>()<br>)<\/strong><br>Order by T.Categor\u00eda, T.Empleado<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_12.png\" alt=\"\" class=\"wp-image-2296\" width=\"658\" height=\"1202\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_12.png 514w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_12-164x300.png 164w\" sizes=\"auto, (max-width: 658px) 100vw, 658px\" \/><\/figure>\n\n\n\n<p style=\"font-size:22px\"><strong>Usando la funci\u00f3n Grouping.<\/strong><\/p>\n\n\n\n<p>Se han incluido dos columnas donde se usa la funci\u00f3n Grouping.<\/p>\n\n\n\n<p>Select Grouping(T.Categor\u00eda) As &#8216;Agrupado por Categor\u00eda&#8217;,<br>Grouping(T.Empleado) As &#8216;Agrupado por Empleado&#8217;,<br>isnull(T.Categor\u00eda,\u00bb) As &#8216;Categor\u00eda&#8217;,<br>isnull(T.Empleado,\u00bb) As &#8216;Empleado&#8217;,<br>Sum(T.Total) As &#8216;Total&#8217;<br>from TotalesVentasEmpleadoA\u00f1oCategoria As T<br>Group by<br>Grouping Sets<br>(<br>(T.Categor\u00eda),<br>(T.Empleado),<br>(T.Categor\u00eda, T.Empleado),<br>()<br>)<br>Order by T.Categor\u00eda, T.Empleado<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_13.png\" alt=\"\" class=\"wp-image-2297\" width=\"684\" height=\"684\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_13.png 938w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_13-300x300.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_13-150x150.png 150w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_13-768x769.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/11\/ManualSQL_GroupingSets_13-795x796.png 795w\" sizes=\"auto, (max-width: 684px) 100vw, 684px\" \/><\/figure>\n\n\n\n<p class=\"has-background\" style=\"font-size:18px;background-color:#c5e6f5\"><strong>Explicaci\u00f3n<\/strong><br>Al usar la funci\u00f3n Grouping en un campo muestra dos posibles valores, CERO y UNO. El valor de UNO (1) significa que se ha agrupado por el campo que se especifica como par\u00e1metro de la funci\u00f3n, el valor de CERO (0) indica que no se ha agrupado por el campo dentro de los par\u00e9ntesis de la funci\u00f3n.<br>Note en la imagen anterior que el primer registro que muestra las ventas totales tanto por empleado y por categor\u00eda aparece en UNO en ambas columnas. De los registros 2 hasta el 10 se ha agrupado por categor\u00eda, mostrando las ventas totales de cada empleado. El registro 11 muestra el total de la categor\u00eda Beverage, significa la agrupaci\u00f3n de las ventas de todos los empleados<br>en esa categor\u00eda.<br>A partir del registro 12, muestra el total de las ventas tanto por Categor\u00eda como por Empleado, presenta CERO en ambas columnas porque el agrupamiento es por los dos campos y no por cada uno de ellos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uso de Grouping Sets en SQL Server Los agrupamiento en SQL Server permiten mostrar un conjunto de resultados donde una o mas columnas que se muestran es el resultado del uso de alguna de las funciones de agregado que calculan suma, promedio,m\u00e1ximo, m\u00ednimo, etc.Si se desea mostrar mas de un agrupamiento en el mismo conjunto &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=2283\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":2284,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[265,79,264],"class_list":["post-2283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-consultasdedatos","tag-agrupamientos","tag-group-by","tag-grouping-sets","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2283"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2283\/revisions"}],"predecessor-version":[{"id":2298,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2283\/revisions\/2298"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/2284"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}