Ahora DB2 da soporte a ORDER BY en subselecciones y selecciones completas.
A continuación, aparece un diagrama de sintaxis parcial de la selección completa modificada que muestra la ubicación de la cláusula order by.
>>-+-subselección---------+-------------------------------------> +-(selección-completa)-+ '-| cláusula-values |--' .-------------------------------------------------. V | >----+---------------------------------------------+-+----------> '-+-UNION---------+--+-subselección---------+-' +-UNION ALL-----+ +-(selección-completa)-+ +-EXCEPT--------+ '-| cláusula-values |--' +-EXCEPT ALL----+ +-INTERSECT-----+ '-INTERSECT ALL-' >--+-------------------+--------------------------------------->< '-cláusula-order-by-'
Una selección completa que contenga una cláusula ORDER BY no puede especificarse en:
Una cláusula ORDER BY de una selección completa no afecta al orden de las filas devueltas por una consulta. Una cláusula ORDER BY sólo afecta al orden de las filas devueltas si se especifica en la selección completa más externa.
A continuación, aparece el diagrama de sintaxis completo de la subselección modificada que muestra la ubicación de la cláusula order by y la cláusula fetch first.
>>-cláusula-select--cláusula-from--+----------------+-----------> '-cláusula-where-' >--+-------------------+--+-----------------+-------------------> '-cláusula-group-by-' '-cláusula-having-' >--+-------------------+--------------------------------------->< '-cláusula-order-by-'
Las cláusulas de la subselección se procesan en la secuencia siguiente:
Una subselección que contenga una cláusula ORDER BY no puede especificarse en los casos siguientes:
Por ejemplo, no es válido especificar lo siguiente (SQLSTATE 428FJ SQLCODE -20211):
SELECT * FROM T1 ORDER BY C1 UNION SELECT * FROM T2 ORDER BY C1
El ejemplo siguiente sí es válido:
(SELECT * FROM T1 ORDER BY C1) UNION (SELECT * FROM T2 ORDER BY C1)
Una cláusula ORDER BY de una subselección no afecta al orden de las filas devueltas por una consulta. Una cláusula ORDER BY sólo afecta al orden de las filas devueltas si se especifica en la selección completa más externa.
A continuación, aparece el diagrama de sintaxis completo de la cláusula order by modificada.
.-,---------------------------------. V .-ASC--. | >>-ORDER BY----+-clave-clasificación--+------+-+-+------------->< | '-DESC-' | '-ORDER OF--indicador-tabla-----' clave-clasificación |--+-nombre-columna-simple---------+----------------------------| +-entero-simple-----------------+ '-expresión-clave-clasificación-'
Tenga en cuenta que este formato no está permitido en una selección completa (caso distinto del formato degenerativo de una selección completa). Por ejemplo, no es válido lo siguiente:
(SELECT C1 FROM T1 ORDER BY C1) UNION SELECT C1 FROM T2 ORDER BY ORDER OF T1
El ejemplo siguiente sí es válido:
SELECT C1 FROM (SELECT C1 FROM T1 UNION SELECT C1 FROM T2 ORDER BY C1 ) AS UTABLE ORDER BY ORDER OF UTABLE
A continuación, aparece el diagrama de sintaxis completo de la sentencia select modificada.
>>-+---------------------------------+--selección-completa------> | .-,---------------------. | | V | | '-WITH----expresión-tabla-común-+-' >--cláusula-fetch-first--*--+----------------------+------------> +-cláusula-read-only---+ | (1) | '-cláusula-update------' >--*--+-----------------------+--*--+--------------+----------->< '-cláusula-optimize-for-' '-WITH--+-RR-+-' +-RS-+ +-CS-+ '-UR-'
Notas:
Sintaxis
.-,---------------------------. V | >>-cláusula-select--INTO----variable-lenguaje-principal-+-------> >--cláusula-from--+----------------+--+-------------------+-----> '-cláusula-where-' '-cláusula-group-by-' >--+-----------------+--+-------------------+-------------------> '-cláusula-having-' '-cláusula-order-by-' >--+--------------+-------------------------------------------->< '-WITH--+-RR-+-' +-RS-+ +-CS-+ '-UR-'
A continuación, aparece un diagrama de sintaxis parcial para las funciones de OLAP donde se muestra la cláusula window order modificada.
cláusula window order |--ORDER BY-----------------------------------------------------> .-,------------------------------------------------------. V .-| opción asc |--. | >----+-expresión-clave-clasificación--+-----------------+-+-+---| | '-| opción desc |-' | '-ORDER OF--indicador-tabla--------------------------' opción asc .-NULLS LAST--. |--ASC--+-------------+-----------------------------------------| '-NULLS FIRST-' opción desc .-NULLS FIRST-. |--DESC--+-------------+----------------------------------------| '-NULLS LAST--'