Está en la página 1de 22

Módulo 5

Ordenar y filtrar datos

Contenido:

Módulo Descripción general 5-1

Lección 1: Clasificación de datos 5.2

Lección 2: Filtrado de datos con predicados 5-6

Lección 3: Filtrado de datos con TOP y OFFSET-FETCH 5-10

Lección 4: Trabajar con Valores Desconocido 5.15

Laboratorio: Clasificación y filtrado de datos 5.18

Revisión del módulo y Bares 05.23

Módulo de Información general

En este módulo, usted aprenderá cómo mejorar las consultas para limitar las filas que regresan
y controlar el orden

en el que se muestran las filas.

A principios de este curso, se enteró de que, según la teoría relacional, conjuntos de datos no
incluyen ninguna

definición de un orden de clasificación. Como resultado, si usted requiere la salida de una


consulta que se mostrará en un determinado

pedido, tendrá que añadir una cláusula ORDER BY de la sentencia SELECT. En este módulo,
usted aprenderá

cómo escribir consultas utilizando ORDER BY para controlar el orden de presentación.

En un módulo anterior, también aprendió cómo construir una cláusula FROM para devolver
filas de uno o más

mesas. Es poco probable que usted siempre querrá volver todas las filas de la fuente. Por
motivos de rendimiento,

así como las necesidades de la aplicación cliente o informe, tendrá que limitar el cual se
devuelven filas. Como

usted aprenderá en este módulo, puede limitar las filas con una cláusula WHERE basado en un
predicado, o puede

limitar filas con TOP y OFFSET-FETCH, basado en el número de filas y el pedido.

Al trabajar con datos del mundo real en sus consultas, puede encontrar situaciones en las que
los valores se están perdiendo.

Es importante escribir consultas que pueden manejar correctamente los valores perdidos. En
este módulo, usted aprenderá

sobre el manejo de los resultados que faltan y desconocidos.


MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

2.5 Clasificación y filtrado de datos

Lección 1

Ordenar datos
En esta lección, aprenderá cómo agregar una cláusula ORDER BY a sus consultas para controlar
el orden de las filas

que aparece en la salida de la consulta.

Objetivos de la lección

Después de completar esta lección, el alumno será capaz de:

 Describir la cláusula ORDER BY.

 Describir el ORDER BY sintaxis cláusula.

 Enumerar ejemplos de la cláusula ORDER BY.

El uso de la cláusula ORDER BY

En el orden lógico de procesamiento de consultas, ORDER BY

es la última fase de una sentencia SELECT a ejecutar.

ORDER BY proporciona la capacidad de controlar el

ordenación de filas, ya que son la salida de la consulta

a la aplicación cliente. Sin un ORDER BY

cláusula, Microsoft® SQL Server® no lo hace

garantizar el orden de filas, de acuerdo con

teoría relacional.

Para ordenar la salida de su consulta, agregará una

Cláusula ORDER BY en esta forma:

Cláusula ORDER BY

SELECT <select_list>

FROM <table_source>

ORDER BY <order_by_list> ASC | DESC;

ORDER BY puede llevar varios tipos de elementos en la lista:

 Columnas por su nombre. Columnas adicionales más allá de la primera se especifica en la


lista se utilizarán como criterios de desempate

para valores no únicos en la primera columna.


 alias de columna. Recuerde que ORDER BY se procesa después de la cláusula SELECT y por lo
tanto tiene

el acceso a los alias definidos en la lista SELECT.

 Columnas de posición en la cláusula SELECT. Esto no es recomendable, debido a la facilidad


de lectura disminuida

y el cuidado necesario para mantener la lista ORDER BY al día con los cambios hechos a la

Lista SELECT para la columna.

 Las columnas no detallados en la lista SELECT, sino que forma parte de las tablas listadas en
la cláusula FROM. Si la consulta utiliza

una opción DISTINCT, las columnas en la lista ORDER BY debe encontrarse en la lista SELECT.

Nota: ORDER BY puede también incluir una cláusula COLLATE, que proporciona una forma para
ordenar por un

intercalación de carácter específico, y no la intercalación de la columna en la tabla. Colaciones


serán

más se verá más adelante en este curso.

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

Consulta Microsoft® SQL Server® 3.5

Además de especificar las columnas que deben utilizarse para determinar el orden de
clasificación, también puede controlar

la dirección de la especie a través de la utilización de ASC para ascender (A-Z, 0-9) o DESC para
descendente (Z-A, 9-

0). Clases ascendentes son el valor predeterminado. Cada columna puede estar provista de
una orden por separado, como en el

siguiente ejemplo.

Los empleados serán listados desde el más reciente de alquiler al menos reciente, con los
empleados contratados en la misma fecha

orden alfabético por apellido:

Ascendente y descendente Ordenar

USO TSQL;

IR

HIREDATE SELECT, nombre, apellido

DESDE hr.employees

ORDER BY HIREDATE DESC, ASC apellido;

Documentación adicional en la cláusula ORDER BY se puede encontrar en los libros en línea en:
ORDER BY (cláusula de Transact-SQL)

http://go.microsoft.com/fwlink/?LinkID=402718

ORDER BY Sintaxis Cláusula

La sintaxis de la cláusula ORDER BY aparece como

de la siguiente manera:

Cláusula ORDER BY

ORDER BY <order_by_list>

OFFSET <offset_value> ROW | ROWS FETCH

PRIMERA | SIGUIENTE <fetch_value> ROW | ROWS ONLY

Nota: El uso de la opción OFFSET-FETCH

en la cláusula ORDER BY serán cubiertos más adelante en este

módulo.

La mayoría de las variaciones de ORDER BY se producirán en la lista ORDER BY. Para especificar
columnas por su nombre, con el valor por defecto

orden ascendente, utilice la siguiente sintaxis:

ORDER BY Lista

ORDER BY <column_name_1>, <column_name_2>;

Un fragmento de código utilizando columnas de la tabla Sales.Customers se vería así:

ORDER BY Lista Ejemplo

ORDER BY país, región, ciudad;

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

4.5 Clasificación y filtrado de datos

Para especificar columnas por alias definidos en la cláusula SELECT, utilice la siguiente sintaxis:

ORDER BY un Alias

SELECT <column_name_1> AS alias1, <column_name_2> AS alias2

DESDE <source table>

ORDER BY alias1;

Una consulta de la tabla Sales.Orders utilizando alias de columna se vería así:

ORDER BY Con Alias Ejemplo

Idpedido SELECT, custid, AÑO (FechaPedido) AS orderyear

DESDE Sales.Orders
ORDER BY orderyear;

Nota: Consulte el tema anterior para la sintaxis y el uso de ASC o DESC para controlar el orden
de clasificación.

ORDER BY Ejemplos Cláusula

Los siguientes son ejemplos de consultas comunes

utilizando ORDER BY para ordenar la salida de pantalla. Todas

consultas utilizan la base de datos de la muestra TSQL.

Una consulta en la tabla Sales.Orders, la clasificación del

resultados por columna OrderDate, especificado por

nombre:

ORDER BY Ejemplo

Idpedido SELECT, custid, FechaPedido

DESDE Sales.Orders

ORDER BY OrderDate;

Una consulta en la tabla Sales.Orders, que define un alias en la cláusula SELECT y clases por ese

alias de columna:

ORDER BY Ejemplo

Idpedido SELECT, custid, AÑO (FechaPedido) AS orderyear

DESDE Sales.Orders

ORDER BY DESC orderyear;

Una consulta en la tabla Sales.Orders, que ordena la salida con el fin de OrderDate
descendente (es decir,

más reciente al más antiguo):

ORDER BY Ejemplo

Idpedido SELECT, custid, FechaPedido

DESDE Sales.Orders

ORDER BY DESC OrderDate;

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

Consulta Microsoft® SQL Server® 5.5

Una consulta en la tabla hr.employees, que ordena los empleados en orden descendente de la
fecha de contratación (que
es, más reciente al más antiguo), con apellido de diferenciar los empleados contratados en la
misma fecha:

ORDER BY Ejemplo

HIREDATE SELECT, nombre, apellido

DESDE hr.employees

ORDER BY HIREDATE DESC, ASC apellido;

Demostración: Clasificación de Datos

En esta demostración, verá cómo:

 Clasificar los datos utilizando la cláusula ORDER BY,

Pasos de demostración

Ordenar datos mediante la cláusula ORDER BY

1. Asegúrese de que las máquinas virtuales 20461C-MIA-CC y 20461C-MIA-SQL se ejecutan


tanto, y luego

iniciar sesión en 20461C-MIA-SQL como AdventureWorks \ Estudiante con la contraseña Pa $$


w0rd.

2. Ejecute D: \ Demofiles \ Mod05 \ Setup.cmd como administrador.

3. Inicie SQL Server Management Studio y conéctese a la instancia de motor de base de MIA-
SQL utilizando

La autenticación de Windows.

4. Abra la solución Demo.ssmssln en la carpeta D: \ Demofiles \ Mod05 \ demo.

5. Si el panel Explorador de soluciones no está visible, en el menú Ver, haga clic en el


Explorador de soluciones.

6. Abra la 11 - archivo de script A.sql demostración.

7. Siga las instrucciones contenidas en los comentarios del archivo de comandos.

8. Mantenga abierta para la próxima manifestación SQL Server Management Studio.

Pregunta: ¿El orden físico de filas en una tabla de SQL Server garantiza ninguna orden de
clasificación en

consultas utilizando la tabla?

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

5.6 Clasificación y filtrado de datos


Lección 2

Filtrado de datos con predicados


Cuando se consulta SQL Server, en su mayoría quieren recuperar sólo un subconjunto de todas
las filas almacenadas en la

tabla que aparece en la cláusula FROM. Esto es especialmente cierto a medida que aumentan
los volúmenes de datos. Para limitar las filas que son

Volverá, por lo general va a utilizar la cláusula WHERE en la sentencia SELECT. En esta lección,
aprenderá

cómo construir cláusulas WHERE para filtrar las filas que no coinciden con el predicado.

Objetivos de la lección

Después de completar esta lección, el alumno será capaz de:

 Describir la cláusula WHERE.

 Describir la sintaxis de la cláusula WHERE.

Filtrado de datos en la cláusula WHERE con predicados

Con el fin de limitar las filas que se devuelven por su

consulta, tendrá que añadir una cláusula WHERE para

su instrucción SELECT, después de la DE

cláusula. Cláusulas WHERE se construyen a partir de una

condición de búsqueda, que a su vez está escrito como una

expresión de predicado. El predicado proporciona una

filtro lógico a través del cual debe pasar cada fila.

Sólo las filas que regresan TRUE en el predicado serán

salida a la siguiente fase lógica de la consulta.

Al escribir una cláusula WHERE, tenga presente lo siguiente

consideraciones en mente:

 Su predicado debe expresarse como una lógica

condición, evaluando a VERDADERO o FALSO. (Esto cambiará cuando se trabaja con valores
perdidos o NULL.

Vea Lección 4 para obtener más información.)

 Sólo las filas para las que el predicado se evalúa como TRUE se pasarán a través del filtro.

 Valores de DESCONOCIDO FALSO o se filtran.

 alias de columnas declaradas en cláusula SELECT de la consulta no se pueden utilizar en el


predicado cláusula WHERE.
Recuerde que, lógicamente, la cláusula WHERE es la siguiente fase de ejecución de la consulta
después de, así que será

procesado antes de otras cláusulas como SELECT. Una consecuencia de esto es que la cláusula
en la que se

incapaz de hacer referencia a los alias de columnas creadas en la cláusula SELECT. Si ha creado
expresiones en el

Lista SELECT, tendrá que repetir a utilizar en la cláusula WHERE.

Por ejemplo, la siguiente consulta, que utiliza una expresión calculada sencilla en la lista
SELECT, se ejecutará

correctamente:

Filtrado Ejemplo

Idpedido SELECT, custid, AÑO (FechaPedido) AS ordyear

DESDE Sales.Orders

Donde el año (FechaPedido) = 2,006;

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

Consulta Microsoft® SQL Server® 5.7

La siguiente consulta fallará, debido a la utilización de los alias de columna en la cláusula


WHERE:

Alias Columna incorrecta en WHERE cláusula

Idpedido SELECT, custid, AÑO (FechaPedido) AS ordyear

DESDE Sales.Orders

DONDE ordyear = 2,006;

El mensaje de error indica que el uso del alias de columna en la línea 3 del lote:

Msj 207, nivel 16, estado 1, línea 3

Nombre de columna no válido 'ordyear'.

Desde la perspectiva del rendimiento de la consulta, el uso de efectivo cláusulas WHERE


pueden proporcionar una significativa

impacto en SQL Server. En lugar de devolver todas las filas al cliente para el post-
procesamiento, una cláusula where causas

SQL Server para filtrar los datos en el servidor. Esto puede reducir el tráfico de red y el uso de
memoria en el

cliente. Desarrolladores y administradores de SQL Server también pueden crear índices para
apoyar de uso común

predicados, fomentar la mejora del rendimiento.


DONDE Sintaxis Cláusula

En los Libros en pantalla, la sintaxis de la cláusula WHERE

aparece como sigue:

DONDE Sintaxis Cláusula

DONDE <search_condition>

La forma más común de una cláusula WHERE es tan

de la siguiente manera:

Típico cláusula WHERE

DONDE <column> <operador> <expresión>

Por ejemplo, el siguiente fragmento de código muestra una cláusula WHERE que filtrará sólo
los clientes de

España:

DONDE Ejemplo Cláusula

ContactName SELECT, país

DESDE Sales.Customers

DONDE país = N'Spain ';

Cualquiera de los operadores lógicos introducidos en el módulo de lenguaje T-SQL


anteriormente en este supuesto se puede usar

en un predicado cláusula WHERE.

En este ejemplo se filtra pedidos realizados después de una fecha determinada:

DONDE Ejemplo CLÁUSULA

Idpedido SELECT, FechaPedido

DESDE Sales.Orders

DONDE OrderDate> '20070101';

Nota: La representación de fechas como cadenas delimitadas por comillas serán cubiertos

en el módulo siguiente.

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

5.8 Clasificación y filtrado de datos

Además de utilizar los operadores lógicos, literales, o constantes en una cláusula WHERE,
también puede utilizar varios TSQL

opciones en el predicado:

Los predicados y operadores Descripción


EN Determina si un valor especificado coincide con cualquier valor en un

subconsulta o una lista.

ENTRE Especifica un rango inclusivo para probar.

COMO Determina si una cadena de caracteres específica coincide con un

patrón especificado.

Y Combina dos expresiones booleanas y devuelve true sólo cuando

Ambas cosas son ciertas.

O Combina dos expresiones booleanas y devuelve TRUE si bien es

CIERTO.

NO Invierte el resultado de una condición de búsqueda.

Nota: El uso de LIKE para que coincida con los patrones en los datos basados en caracteres se
tratarán en la próxima

módulo.

El siguiente ejemplo muestra el uso del operador OR para combinar condiciones en una
cláusula WHERE:

DONDE Con O Ejemplo

Custid SELECT, companyname, país

DESDE Sales.Customers

DONDE país = N'UK 'O país = N'Spain';

El siguiente ejemplo se modifica la consulta anterior para utilizar el operador IN para los
mismos resultados:

DONDE con el Ejemplo EN

Custid SELECT, companyname, país

DESDE Sales.Customers

DONDE país IN (N'UK ', N'Spain');

El ejemplo siguiente utiliza el operador NOT para revertir la condición anterior:

Operador NO

Custid SELECT, companyname, país

DESDE Sales.Customers

DONDE país NO EN (N'UK ', N'Spain');

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

Consulta Microsoft® SQL Server® 5.9


El siguiente ejemplo utiliza operadores lógicos para buscar dentro de un rango de fechas:

Rango Ejemplo

Idpedido SELECT, custid, FechaPedido

DESDE Sales.Orders

DONDE OrderDate> = '20070101' Y OrderDate <= '20080101';

El siguiente ejemplo se logra el mismo resultado utilizando el operador BETWEEN:

ENTRE Operador

Idpedido SELECT, custid, FechaPedido

DESDE Sales.Orders

DONDE OrderDate ENTRE '20061231' Y '20080101';

Nota: El uso de operadores de comparación con los tipos de datos de fecha y hora requiere
especial

consideración. Para obtener más información, consulte el siguiente módulo.

Demostración: Filtrado de datos con predicados

En esta demostración, verá cómo:

 Filtrar datos en una cláusula WHERE.

Pasos de demostración

Filtrar datos en una cláusula WHERE

1. Asegúrese de que ha completado la demostración previa en este módulo. Alternativamente,


inicie el

Máquinas virtuales 20461C-MIA-CC y 20461C-MIA-SQL, ingrese a 20461C-MIA-SQL como

AdventureWorks \ Estudiante con la contraseña Pa $$ w0rd, y correr

D: \ Demofiles \ Mod05 \ Setup.cmd como administrador.

2. Si SQL Server Management Studio no está abierto, iniciarlo y conectarse a la base de datos
MIA-SQL

instancia del motor mediante la autenticación de Windows y, a continuación, abra la solución


Demo.ssmssln en el

Carpeta D: \ Demofiles \ Mod05 \ demo.

3. En el Explorador de soluciones, abra el 21 - archivo de script B.sql demostración.

4. Siga las instrucciones contenidas en los comentarios del archivo de comandos.

5. Mantenga abierta para la próxima manifestación SQL Server Management Studio.

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO


05.10 ordenar y filtrar datos

Lección 3

Filtrado de datos con TOP y OFFSET-FETCH

En la lección anterior, usted escribió consultas que filtran filas sobre la base de los datos
almacenados en su interior. Puedes

también escribir consultas que rangos de filtro de filas, ya sea basado en un número específico
para recuperar o uno gama de

filas a la vez. En esta lección, aprenderá cómo limitar rangos de filas en la cláusula SELECT
utilizando un TOP

opción. También aprenderá cómo limitar rangos de filas utilizando la opción OFFSET-FETCH de
un ORDER BY

cláusula.

Objetivos de la lección

Después de completar esta lección, el alumno será capaz de:

 Describir la opción TOP.

 Describir la cláusula OFFSET-FETCH.

 Describir la sintaxis de la cláusula OFFSET-FETCH.

Filtrado en la cláusula SELECT Utilizando el TOP Opción

Al devolver filas de una consulta, es posible que necesite

para limitar el número total de filas devueltas, así

como filtro con una cláusula WHERE. La opción TOP, un

Extensión de Microsoft propietaria del SELECT

cláusula, le permitirá especificar un número de filas que se

devolver, ya sea como un número ordinal o porcentaje

de todas las filas candidatos.

La sintaxis simplificada de la opción TOP es tan

de la siguiente manera:

TOP Opción

TOP SELECT (N) <column_list>

FROM <table_source>

DONDE <search_condition>;

Por ejemplo, para recuperar sólo los cinco pedidos más recientes de la tabla Sales.Orders,
utilice la siguiente
consulta:

TOP Ejemplo

SELECT TOP (5) idpedido, custid, FechaPedido

DESDE Sales.Orders

ORDER BY DESC OrderDate;

Tenga en cuenta que el operador TOP depende de una cláusula ORDER BY para proporcionar
prioridad significativa para el

filas seleccionadas. En ausencia de ORDER BY, no hay garantía de que serán devueltos filas. en
el

ejemplo anterior, las cinco órdenes podría ser devuelto si no había una cláusula ORDER BY.

Además de especificar un número fijo de filas a devolver, la palabra clave TOP también acepta
el CON

Opción TIES, que recuperará las filas con los valores que se pueden encontrar en las N filas
superiores seleccionados.

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

Consulta Microsoft® SQL Server® 5-11

Por ejemplo, la siguiente consulta devolverá cinco filas con las fechas más recientes orden:

Sin la opción WITH TIES

SELECT TOP (5) idpedido, custid, FechaPedido

DESDE Sales.Orders

ORDER BY DESC OrderDate;

Los resultados muestran cinco filas con dos valores distintos FechaPedido:

idpedido custid OrderDate

----------- ----------- -----------------------

11 077 65 2008-05-06 00: 00: 00,000

11076 9 2008-05-06 00: 00: 00,000

11 075 68 2008-05-06 00: 00: 00,000

11 074 73 2008-05-06 00: 00: 00,000

11 073 58 2008-05-05 00: 00: 00,000

(5 fila (s) affected)

Sin embargo, mediante la adición de la opción con vínculos con la cláusula TOP, verás que más
filas califican para el

segunda más antigua fecha de la orden:


Con la opción WITH TIES

TOP SELECT (5) CON LAZOS idpedido, custid, FechaPedido

DESDE Sales.Orders

ORDER BY DESC OrderDate;

Esta consulta modificada devuelve los siguientes resultados:

idpedido custid OrderDate

----------- ----------- -----------------------

11 077 65 2008-05-06 00: 00: 00,000

11076 9 2008-05-06 00: 00: 00,000

11 075 68 2008-05-06 00: 00: 00,000

11 074 73 2008-05-06 00: 00: 00,000

11 073 58 2008-05-05 00: 00: 00,000

11 072 20 2008-05-05 00: 00: 00,000

11 071 46 2008-05-05 00: 00: 00,000

11 070 44 2008-05-05 00: 00: 00,000

(8 fila (s) affected)

La decisión de incluir CON LAZOS dependerá de su conocimiento de los datos de origen y su


potencial para

valores únicos.

Para devolver un porcentaje de la cantidad de filas, utilice la opción CIENTO con TOP en lugar
de un número fijo.

Por ejemplo, si la tabla Sales.Orders contiene 830 pedidos, la siguiente consulta devolverá 83
filas:

La devolución de un porcentaje de registros

TOP SELECT (10) idpedido CIENTO, custid, FechaPedido

DESDE Sales.Orders

ORDER BY DESC OrderDate;

TOP (N) por ciento también se puede usar con la opción CON LAZOS.

Nota: TOP (N) POR CIENTO redondeará al número entero más próximo a los efectos de
recuento de filas.

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

12.5 Clasificación y filtrado de datos


Información adicional acerca de la cláusula TOP se puede encontrar en los libros en línea en:

TOP (Transact-SQL)

http://go.microsoft.com/fwlink/?LinkID=402719

Filtrado en la cláusula ORDER BY Uso FETCH OFFSET-

Si bien la opción TOP es utilizado por muchos de SQL Server

profesionales como un método para recuperar sólo

cierto rango de filas, también tiene sus desventajas:

 TOP es propiedad de T-SQL y SQL Server.

 TOP no admite saltarse una gama de

filas.

 Desde TOP depende de una cláusula ORDER BY,

usted no puede utilizar una orden de clasificación para establecer la

filas filtradas por arriba y otro para

determinar la visualización de salida.

Para hacer frente a una serie de estas preocupaciones, Microsoft

añadido una nueva opción a SQL Server 2012 - la ampliación de la ORDEN OFFSET-FETCH POR
cláusula.

Como TOP, OFFSET-FETCH le permite devolver sólo una gama de las filas seleccionadas por su
consulta. Sin embargo,

añade la funcionalidad para proporcionar un punto de partida (un desplazamiento) y un valor


para especificar el número de filas que

me gustaría volver (un valor podido recuperar). Esto proporciona una técnica conveniente para
paginación a través de resultados.

Cuando la paginación, tendrá que tener en cuenta que cada consulta con un desplazamiento-
FETCH carreras cláusula

independientemente de cualquier consulta anterior o subsiguiente. No existe en el servidor de


estado mantiene, y usted

necesitará un seguimiento de su posición a través de un conjunto de resultados a través de


código de cliente.

Como se verá en el siguiente tema, OFFSET-FETCH se ha escrito para permitir que un Inglés
más natural

sintaxis del lenguaje.

Para obtener más información acerca de la cláusula OFFSET-FETCH, vaya a la sección Uso
OFFSET y FETCH para limitar
las filas devueltas en Libros en línea en:

ORDER BY (cláusula de Transact-SQL)

http://go.microsoft.com/fwlink/?LinkID=402718

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

Consulta Microsoft® SQL Server® 5-13

OFFSET-FETCH Sintaxis

La sintaxis de la cláusula OFFSET-FETCH es tan

de la siguiente manera:

OFFSET FETCH Cláusula

OFFSET {integer_constant |

offset_row_count_expression} {ROW | FILAS}

[FETCH {PRIMERA | SIGUIENTE} {integer_constant |

fetch_row_count_expression} {ROW | FILAS} SOLO]

Para utilizar OFFSET-FETCH, se le suministrará una partida

Valor de desplazamiento (que puede ser cero) y una opcional

número de filas para volver, como en el siguiente

ejemplo:

Este ejemplo se saltará las primeras 10 filas y luego devolver los próximos 10 filas, según lo
determinado por la fecha de la orden:

OFFSET FETCH Ejemplo

Idpedido SELECT, custid, FechaPedido

DESDE Sales.Orders

ORDER BY OrderDate, idpedido DESC

OFFSET 10 FILAS FETCH PROXIMAS 10 FILAS SOLAMENTE;

Como se puede ver en la definición de sintaxis, se requiere la cláusula OFFSET, pero la cláusula
FETCH no lo es. Si el

FETCH cláusula se omite, se devolverán todas las filas siguientes offset. Usted también
encontrará que las palabras clave

ROW y ROWS son intercambiables, ya que son los primeros y NEXT, que permite una sintaxis
más natural.

Para asegurar resultados exactitud, especialmente a medida que "se mueve" de la página a la
página de los datos, es importante
construir una cláusula ORDER BY que proporcionará ordenamiento único y producir un
resultado determinista. Pese A

poco probable debido al optimizador de consultas de SQL Server, es técnicamente imposible


que una fila aparezca en más de

una página a menos que el rango de filas es determinista.

Nota: Para utilizar OFFSET-FETCH para paginación, puede suministrar el valor de


desplazamiento, así como fila

contar expresiones en forma de variables o parámetros. Usted aprenderá más acerca de las
variables y

parámetros de procedimiento almacenado en módulos posteriores de este curso.

Los siguientes son algunos ejemplos del uso de offset FETCH en las consultas de T-SQL, todos
los cuales utilizan el TSQL

base de datos de la muestra:

Para recuperar las 50 filas más recientes según lo determinado por la fecha de la orden, esta
consulta se inicia con un desplazamiento de

cero. Se devolverá un resultado similar a un TOP SELECT (50) consulta:

OFFSET FETCH Ejemplo

Idpedido SELECT, custid, empid, FechaPedido

DESDE Sales.Orders

ORDER BY DESC OrderDate

OFFSET 0 FILAS FETCH FIRST 50 FILAS SOLAMENTE;

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

5.14 Clasificación y filtrado de datos

Esta consulta recuperar filas 51 a 100 de un conjunto de resultados:

OFFSET FETCH Ejemplo

Idpedido SELECT, custid, empid, FechaPedido

DESDE Sales.Orders

ORDER BY DESC OrderDate

OFFSET 50 FILAS FETCH próximos 50 FILAS SOLAMENTE;

Nota: A diferencia de los encontrados en los módulos anteriores, los ejemplos de OFFSET-
FETCH debe ser

ejecutada por SQL Server 2012 o posterior. OFFSET-FETCH no se admite en SQL Server 2008 R2
o

más temprano.
Demostración: Filtrado de datos con TOP y OFFSET-FETCH

En esta demostración, verá cómo:

 Filtrar datos utilizando TOP y OFFSET-FETCH.

Pasos de demostración

Filtrar datos mediante TOP y OFFSET-FETCH

1. Asegúrese de que ha completado la demostración previa en este módulo. Alternativamente,


inicie el

Máquinas virtuales 20461C-MIA-CC y 20461C-MIA-SQL, ingrese a 20461C-MIA-SQL como

AdventureWorks \ Estudiante con la contraseña Pa $$ w0rd, y correr

D: \ Demofiles \ Mod05 \ Setup.cmd como administrador.

2. Si SQL Server Management Studio no está abierto, iniciarlo y conectarse a la base de datos
MIA-SQL

instancia del motor mediante la autenticación de Windows y, a continuación, abra la solución


Demo.ssmssln en el

Carpeta D: \ Demofiles \ Mod05 \ demo.

3. En el Explorador de soluciones, abra el 31 - archivo de script C.sql demostración.

4. Siga las instrucciones contenidas en los comentarios del archivo de comandos.

5. Mantenga abierta para la próxima manifestación SQL Server Management Studio.

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

Consulta Microsoft® SQL Server® 5-15

Lección 4

Trabajar con valores desconocidos


A diferencia de la lógica booleana tradicional, la lógica de predicados en SQL Server necesita
para tener en cuenta los valores perdidos y

hacer frente a los casos en que se desconoce el resultado de un predicado. En esta lección,
aprenderá con valores de tres

lógica representa valores desconocidos y desaparecidos, cómo SQL Server utiliza NULL para
marcar valores perdidos, y

cómo probar para NULL en sus consultas.

Objetivos de la lección

Después de completar esta lección, el alumno será capaz de:

 Describir trivalente lógica.

 Describir el uso de NULL en las consultas.


La lógica trivalente-

A principios de este curso, usted aprendió que SQL Server

utiliza la lógica de predicados como marco para la lógica

pruebas que devuelven verdadero o falso. Esto es cierto para

expresiones lógicas donde todos los valores están probando

están presentes. Si conoces a los valores de X e

Y, usted puede determinar con seguridad si X> Y es TRUE

o falsa.

Sin embargo, en SQL Server, siendo no todos los datos

en comparación pueda estar presente. Es necesario planificar para

y actuar sobre la posibilidad de que algunos datos son

faltante o desconocido. Los valores en SQL Server pueden ser

faltante pero aplicable, tales como el valor de una

inicial del segundo nombre que no ha sido suministrado por un empleado. También es posible
que falte, pero inaplicables, como

el valor de una inicial del segundo nombre para un empleado que no tiene nombre. En ambos
casos, SQL Server marcará

el valor faltante como NULL. Un NULL no es ni verdadero ni falso, sino una marca para
DESCONOCIDO, que

representa el tercer valor en lógica trivalente.

Como se mencionó anteriormente, se puede determinar si X> Y es VERDADERO o FALSO


cuando se conocen los valores de ambos

X e Y. Pero, ¿qué retorno de SQL Server para la expresión X> Y cuando Y está faltando? SQL
Server devolverá

un desconocido, marcado como NULL. Usted tendrá que tener en cuenta la posible presencia
de NULL en su

la lógica de predicados, así como en los valores almacenados en las columnas marcadas con
NULL. Usted tendrá que escribir

consultas que utilizan lógica trivalente para dar cuenta de tres resultados posibles - TRUE,
FALSE, y

DESCONOCIDO.

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

16.5 Clasificación y filtrado de datos

Manejo de NULL en Consultas


Una vez que haya adquirido un conceptual

comprensión de la lógica trivalente y NULL,

es necesario comprender los diferentes mecanismos

SQL Server utiliza para el manejo de valores NULL. Tened en cuenta

las siguientes pautas:

 Los filtros de consulta, tales como ON, DONDE, y la

Cláusula HAVING, tratar NULL como resultado FALSO.

Una cláusula WHERE que pone a prueba para un

<column_value> = N no volverá filas

cuando la comparación es FALSO. Ni tampoco

devolver filas cuando sea el valor de columna o

el valor de N es NULL.

Tenga en cuenta la salida de las siguientes preguntas:

ORDER BY de consulta que incluye NULL en Resultados

Empid SELECT, apellido, región

DESDE hr.employees

ORDER BY ASC región; Orden de clasificación --Ascending incluye explícitamente para mayor
claridad.

Esto devuelve la siguiente, con todos los empleados cuya región no se encuentra (marcado
como NULL) ordenados primero:

región apellido empid

----------- --------------------

5 Buck NULL

6 Suurs NULL

7 Rey NULL

9 Dolgopyatova NULL

8 Cameron WA

1 Davis WA

2 Funk WA

3 Lew WA

4 Peled WA
Nota: Una pregunta común acerca de cómo controlar la visualización de NULL en las consultas
es si

NULL se puede obligar a la final de un conjunto de resultados. Como puede ver, la cláusula
ORDER BY ordena la

NULL juntos y en primer lugar, un comportamiento que no puede anular.

 ORDER BY trata NULL como si fueran el mismo valor y siempre ordena NULL juntos,
poniéndolos

primero en una columna. Asegúrese de probar los resultados de las consultas en el que la
columna que se utiliza para

orden de clasificación contiene valores NULL, y entender el impacto de los ascendentes y


descendentes de tipo NULL.

• En las consultas ANSI conformes, un NULL nunca es equivalente a otro valor, incluso otro
NULL. Consultas

escrita para probar NULL con una igualdad dejará de devolver los resultados correctos.

Tenga en cuenta el siguiente ejemplo:

Incorrectamente pruebas para NULL

Empid SELECT, apellido, región

DESDE hr.employees

DONDE región = NULL;

Esto devuelve resultados inexactos:

MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO

Consulta Microsoft® SQL Server® 05.17

región apellido empid

----------- --------------------

(0 fila (s) affected)

 Utilice el IS NULL (o no es nulo) del operador en lugar de los iguales (no igual).

Vea el siguiente ejemplo:

Probando correctamente para NULL

Empid SELECT, apellido, región

DESDE hr.employees

DONDE región IS NULL;

Esto devuelve resultados correctos:

región apellido empid


----------- --------------------

5 Buck NULL

6 Suurs NULL

7 Rey NULL

9 Dolgopyatova NULL

(4 fila (s) affected)

Demostración: Trabajar con NULL

En esta demostración, verá cómo:

 Prueba de NULL.

Pasos de demostración

Prueba para NULL

1. Asegúrese de que ha completado la demostración previa en este módulo. Alternativamente,


inicie el

Máquinas virtuales 20461C-MIA-CC y 20461C-MIA-SQL, ingrese a 20461C-MIA-SQL como

AdventureWorks \ Estudiante con la contraseña Pa $$ w0rd, y correr

D: \ Demofiles \ Mod05 \ Setup.cmd como administrador.

2. Si SQL Server Management Studio no está abierto, iniciarlo y conectarse a la base de datos
MIA-SQL

instancia del motor mediante la autenticación de Windows y, a continuación, abra la solución


Demo.ssmssln en el

Carpeta D: \ Demofiles \ Mod05 \ demo.

3. En el Explorador de soluciones, abra el 41 - archivo de script D.sql demostración.

4. Siga las instrucciones contenidas en los comentarios del archivo de comandos.

5. Cierre SQL Server Management Studio sin guardar los archivos.

METRO

También podría gustarte