{"id":289,"date":"2017-09-18T23:06:25","date_gmt":"2017-09-18T23:06:25","guid":{"rendered":"http:\/\/www.manualsqlserver.com\/?p=289"},"modified":"2020-05-19T04:34:55","modified_gmt":"2020-05-19T04:34:55","slug":"consultas-opciones","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=289","title":{"rendered":"Consultas en SQL Server &#8211; Opciones"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"306\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelectD.png\" alt=\"\" class=\"wp-image-1080\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelectD.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelectD-294x300.png 294w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Opciones en Select<\/strong> SQL Server<\/h1>\n\n\n\n<p>Las opciones de un listado con la instrucci\u00f3n select permiten modificar el conjunto de resultados, las opciones son cl\u00e1usulas adicionales que nos permiten reducir la cantidad de registros en el listado, mostrar registros \u00fanicos, obligar al optimizar a usar un &nbsp;\u00edndice, combinar dos instrucciones, entre otras opciones.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p><strong>Las opciones son:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Opci\u00f3n<\/strong><\/td><td><strong>Explicaci\u00f3n<\/strong><\/td><\/tr><tr><td>Top<\/td><td>Limita las filas del conjunto de resultados. Se puede usar con un valor n o especificar un porcentaje. Se usa junto a la cl\u00e1usula Order By.<\/td><\/tr><tr><td>With Ties<\/td><td>Permite mostrar registros que hayan sido limitados usando la opci\u00f3n Top pero que tienen un valor igual al \u00faltimo registro que aparece.<\/td><\/tr><tr><td>Distinct<\/td><td>Permite mostrar valores sin duplicados en una consulta.<\/td><\/tr><tr><td>With (index&#8230;)<\/td><td>Obliga al optimizador a usar un \u00edndice espec\u00edfico.<\/td><\/tr><tr><td>Union<\/td><td>Permite unir diferentes consultas en un solo conjunto de resultados.<\/td><\/tr><tr><td>Into Tabla<\/td><td>Permite crear una tabla con el conjunto de resultados.<\/td><\/tr><tr><td>Offset y Fetch Next<\/td><td>Permiten listar un grupo de resultados que aparecen ordenados pero sin incluir los primeros.<\/td><\/tr><\/tbody><\/table><\/figure>\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<h3 class=\"wp-block-heading\">&nbsp;<strong>Ejercicios<\/strong><\/h3>\n\n\n\n<p>Usando Northwind<br>use Northwind<br>go<\/p>\n\n\n\n<p><strong>1. &#8212; Listar los productos ordenados por precio, mostrar los 10 mas caros.<\/strong><\/p>\n\n\n\n<p>select Top 10 P.ProductID, P.ProductName, P.UnitPrice, P.UnitsInStock<br>from Products As P order by P.UnitPrice desc<br>go<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelect_01.png\" alt=\"\" class=\"wp-image-1082\" width=\"758\" height=\"431\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelect_01.png 640w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelect_01-300x171.png 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><figcaption>10 productos m\u00e1s caros<\/figcaption><\/figure><\/div>\n\n\n\n<p><strong>2. &#8212; Listar las \u00f3rdenes con mas monto, mostrar el 20% de estas.<\/strong><\/p>\n\n\n\n<p>select Top 20 <strong>percent <\/strong>O.OrderID, O.OrderDate, O.Freight<br>from Orders As O order by O.Freight desc<br>go<\/p>\n\n\n\n<p>Note que se ha incluido la palabra percent para mostrar el porcentaje solicitado de acuerdo a la cantidad de \u00f3rdenes.<\/p>\n\n\n\n<p><strong>3. &#8212; Listar los 5 empleados que generaron m\u00e1s \u00f3rdenes, incluir los que tengan la misma cantidad del quinto.(<a href=\"http:\/\/www.manualsqlserver.com\/?p=225\">Ver agrupamientos<\/a>)<\/strong><\/p>\n\n\n\n<p>Select Top 5 with ties<br>E.EmployeeID As &#8216;C\u00f3d. Empleado&#8217;, Empleado = E.LastName + Space(1) + E.FirstName,<br>COUNT(O.OrderID) As &#8216;Cantidad de \u00d3rdenes&#8217;<br>from Orders As O<br>join Employees As E on O.EmployeeID = E.EmployeeID<br>Group by E.EmployeeID, E.LastName + Space(1) + E.FirstName<br>Order by COUNT(O.OrderID) desc<br>go<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelect_02.png\" alt=\"\" class=\"wp-image-1083\" width=\"733\" height=\"291\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelect_02.png 615w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelect_02-300x119.png 300w\" sizes=\"auto, (max-width: 733px) 100vw, 733px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Obligar al optimizador a usar un \u00edndice.<\/strong><\/h2>\n\n\n\n<p><strong>4. &#8212;&nbsp;Listar los productos usando el indice ProductName cuyo campo de indexaci\u00f3n es el campo ProductNam.&nbsp;<\/strong><strong>&nbsp;Esta cl\u00e1usula es similar a usar un Order By.<\/strong><\/p>\n\n\n\n<p>select * from Products with (index(ProductName))<br>go<\/p>\n\n\n\n<p><strong>Usando AdventureWorks<\/strong><br>USE AdventureWorks<br>go<\/p>\n\n\n\n<p><strong>5. &#8211; Listar los empleados ordenados por el N\u00ba ID. (\u00cdndice AK_Employee_NationalIDNumber) (<a href=\"http:\/\/www.manualsqlserver.com\/?cat=5\">Ver \u00cdndices<\/a>)<\/strong><\/p>\n\n\n\n<p>select P.FirstName As &#8216;Apellidos&#8217;, P.LastName As &#8216;Nombre&#8217;, E.NationalIDNumber As &#8216;N\u00ba ID&#8217;<br>FROM HumanResources.Employee AS E <strong>WITH (INDEX(AK_Employee_NationalIDNumber))<\/strong><br>JOIN Person.Contact AS P on E.ContactID = P.ContactID<br>WHERE LastName = &#8216;Johnson&#8217;<br>go<\/p>\n\n\n\n<p><strong>6. &#8212; Usando el \u00edndice 0 (la clave primaria &#8211; \u00edndice agrupado)<\/strong><\/p>\n\n\n\n<p>select P.FirstName As &#8216;Apellidos&#8217;, P.LastName As &#8216;Nombre&#8217;, E.NationalIDNumber As &#8216;N\u00ba ID&#8217;<br>FROM HumanResources.Employee AS E WITH (0)<br>JOIN Person.Contact AS P on E.ContactID = P.ContactID<br>WHERE LastName = &#8216;Johnson&#8217;<br>go<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Uso de Distinct<\/strong><\/h2>\n\n\n\n<p><strong>7. Usando Northwind, listado de los clientes que compraron en el primer mes de 1998<\/strong><\/p>\n\n\n\n<p>use Northwind<br>go<br>select C.CustomerID As &#8216;C\u00f3digo&#8217;, C.CompanyName As &#8216;Cliente&#8217;<br>from Customers As C<br>join Orders As O on C.CustomerID = O.CustomerID<br>where Month(O.OrderDate) = 1 and YEAR(O.OrderDate) = 1998<br>Order by Cliente<br>go<br>&#8212; Note que hay Clientes que se repiten.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"http:\/\/www.manualsqlserver.com\/wp-content\/uploads\/2017\/05\/ManualSQL_OpcionesSelect01.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelect01.png\" alt=\"\" class=\"wp-image-1078\" width=\"647\" height=\"531\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelect01.png 502w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelect01-300x246.png 300w\" sizes=\"auto, (max-width: 647px) 100vw, 647px\" \/><\/a><figcaption>Clientes que se repiten en el listado<\/figcaption><\/figure>\n\n\n\n<p><strong>Usando Distinct los clientes que se repiten no aparecen<\/strong><\/p>\n\n\n\n<p>select Distinct C.CustomerID As &#8216;C\u00f3digo&#8217;, C.CompanyName As &#8216;Cliente&#8217;<br>from Customers As C<br>join Orders As O on C.CustomerID = O.CustomerID<br>where Month(O.OrderDate) = 1 and YEAR(O.OrderDate) = 1998<br>Order by Cliente<br>go<\/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\/05\/ManualSQL_OpcionesSelect02.png\" alt=\"\" class=\"wp-image-1079\" width=\"621\" height=\"562\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelect02.png 464w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_OpcionesSelect02-300x272.png 300w\" sizes=\"auto, (max-width: 621px) 100vw, 621px\" \/><figcaption>Clientes ya no se repiten.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Uso de Union simple<\/strong><\/h2>\n\n\n\n<p><strong>8.&#8211; Listado de los productos de las categor\u00edas 3 y 5 unida con los productos de las categor\u00edas 2,6 y 8<\/strong><\/p>\n\n\n\n<p>select * from Products where CategoryID in (3,5)<br>union<br>select * from Products where CategoryID in (2,6,8)<br>go<\/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<h2 class=\"wp-block-heading\"><strong>Uso de Offset y Fetch Next<\/strong><\/h2>\n\n\n\n<p>Para m\u00e1s informaci\u00f3n ver Uso de Fetch Next en SQL Server. El uso de Offset n rows va a permitir obviar los n registros superiores y el uso de Fetch next va a limitar a una cantidad determinada de registros en el listado.<\/p>\n\n\n\n<p>use Northwind<br>go<\/p>\n\n\n\n<p><strong>Se pueden usar estas opciones desde SQL Server 2012<\/strong><br><strong>9.&#8211;Listar los 10 registros mas caros exceptuando los 5 primeros.<\/strong><\/p>\n\n\n\n<p>select ProductName, UnitPrice<br>from Products order by UnitPrice desc<br>offset 5 rows fetch next 10 rows only<br>go<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Creando tablas resultado de un select &#8211; Into Tabla<\/strong><\/h2>\n\n\n\n<p><strong>10. &#8212; Crear una tabla ProductosCategoriaBebidas (Id = 1)<\/strong><\/p>\n\n\n\n<p>select P.ProductID, P.ProductName, P.UnitPrice, P.QuantityPerUnit, P.UnitsInStock, P.UnitsOnOrder<br><strong>into ProductosCategoriaBebidas<\/strong><br>from Products As P where CategoryID = 1<br>go<br><strong>&#8212; Para visualizar los registros de la tabla generada.<\/strong><br>select * from ProductosCategoriaBebidas<br>go<br><strong>Importante: La tabla creada con Into se crea sin restricciones.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Opciones en Select SQL Server Las opciones de un listado con la instrucci\u00f3n select permiten modificar el conjunto de resultados, las opciones son cl\u00e1usulas adicionales que nos permiten reducir la cantidad de registros en el listado, mostrar registros \u00fanicos, obligar al optimizar a usar un &nbsp;\u00edndice, combinar dos instrucciones, entre otras opciones.<\/p><p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=289\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1080,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[84,86,85,87],"class_list":["post-289","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-consultasdedatos","tag-distinct","tag-fetch-next","tag-offset","tag-with-ties","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/289","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=289"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/289\/revisions"}],"predecessor-version":[{"id":1084,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/289\/revisions\/1084"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/1080"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}