|DB2 agora suporta ORDER BY em sub-seleções e seleções completas.
|O que se segue é um diagrama de sintaxe parcial da seleção completa |modificada, exibindo a localização da order-by-clause.
|>>-+-subselect---------+----------------------------------------> | +-(fullselect)------+ | '-| values-clause |-' | | .----------------------------------------------. | V | |>----+------------------------------------------+-+-------------> | '-+-UNION---------+--+-sub-seleção-------+-' | +-UNION ALL-----+ +-(fullselect)------+ | +-EXCEPT--------+ '-| values-clause |-' | +-EXCEPT ALL----+ | +-INTERSECT-----+ | '-INTERSECT ALL-' | |>--+-----------------+----------------------------------------->< | '-order-by-clause-' | |
|Uma seleção completa que contém uma cláusula ORDER BY não pode ser |especificada em: |
|Uma cláusula ORDER BY em uma seleção completa não afeta a ordem das filas |retornadas por uma consulta. Uma cláusula ORDER BY somente afeta a |ordem das filas retornadas se for especificado na seleção completa mais |distante.
|Segue o diagrama de sintaxe completo da subseleção modificada, mostrando a |localização da order-by-clause.
|>>-select-clause--from-clause--+--------------+-----------------> | '-where-clause-' | |>--+-----------------+--+---------------+-----------------------> | '-group-by-clause-' '-having-clause-' | |>--+-----------------+----------------------------------------->< | '-order-by-clause-' | |
|As cláusulas de subselect são processadas na seguinte seqüência: |
|Uma subselect que contém uma cláusula ORDER BY não pode ser |especificada: |
|Por exemplo, o que se segue não é válido (SQLSTATE 428FJ SQLCODE |-20211):
|SELECT * FROM T1 | ORDER BY C1 |UNION |SELECT * FROM T2 | ORDER BY C1
|O seguinte exemplo é válido:
|(SELECT * FROM T1 | ORDER BY C1) |UNION |(SELECT * FROM T2 | ORDER BY C1)
|Uma cláusula ORDER BY em uma subselect não afeta a ordem das filas |retornadas por uma consulta. Uma cláusula ORDER BY somente afeta a |ordem das filas retornadas se isso for especificado na seleção completa mais |distante.
|O que se segue é um diagrama de sintaxe completa da order-by-clause |modificada.
| .-,------------------------------. | V .-ASC--. | |>>-ORDER BY----+-sort-key--+------+---------+-+---------------->< | | '-DESC-' | | '-ORDER OF--table-designator-' | |sort-key | ||--+-simple-column-name--+--------------------------------------| | +-simple-integer------+ | '-sort-key-expression-' | ||
|Observe que essa forma não é permitida em uma seleção completa (além da |forma degenerativa de uma seleção completa). Por exemplo, o que se |segue não é válido:
|(SELECT C1 FROM T1 | ORDER BY C1) |UNION |SELECT C1 FROM T2 | ORDER BY ORDER OF T1
|O seguinte exemplo é válido:
|SELECT C1 FROM | (SELECT C1 FROM T1 | UNION | SELECT C1 FROM T2 | ORDER BY C1 ) AS UTABLE |ORDER BY ORDER OF UTABLE|
|O que se segue é um diagrama de sintaxe completa da select-statement |modificada:
|>>-+-----------------------------------+--fullselect------------> | | .-,-----------------------. | | | V | | | '-WITH----common-table-expression-+-' | |>--fetch-first-clause--*--+--------------------+----------------> | +-read-only-clause---+ | | (1) | | '-update-clause------' | |>--*--+---------------------+--*--+--------------+------------->< | '-optimize-for-clause-' '-WITH--+-RR-+-' | +-RS-+ | +-CS-+ | '-UR-' | |
|Notas:
|Sintaxe
| .-,-------------. | V | |>>-select-clause--INTO----host-variable-+--from-clause----------> | |>--+--------------+--+-----------------+--+---------------+-----> | '-where-clause-' '-group-by-clause-' '-having-clause-' | |>--+-----------------+--+--------------+----------------------->< | '-order-by-clause-' '-WITH--+-RR-+-' | +-RS-+ | +-CS-+ | '-UR-' | |
|O que se segue é um diagrama de sintaxe parcial para as funções OLAP |exibindo a window-order-clause modificada.
|window-order-clause | | .-,-------------------------------------------. | V .-| opção asc |--. | ||--ORDER BY----+-sort-key-expression--+----------------+-+-+----| | | '-| opção desc |-' | | '-ORDER OF--table-designator--------------' | |opção asc | | .-NULLS LAST--. ||--ASC--+-------------+-----------------------------------------| | '-NULLS FIRST-' | |opção desc | | .-NULLS FIRST-. ||--DESC--+-------------+----------------------------------------| | '-NULLS LAST--' | ||