A cláusula TOP do SQL Server 2000 possui uma opção pouco utilizada, chamada PERCENT. Com esta opção, ao invés de determinar quantos registros desejamos, podemos determinar essa quantidade em porcentagem.
Por exemplo:
SELECT TOP 10 PERCENT * from customers
WHERE region=’SP’
ORDER BY CompanyName
Neste exemplo obtemos 10% dos clientes da região de São Paulo, ordenados por CompanyName. Não são 10 registros, mas 10% entre todos os clientes de São Paulo.
Uma das grandes limitações de uma view está no fato de não permitir a utilização da cláusula ORDER BY sem a cláusula TOP. Se tentarmos criar uma view utilizando a cláusula ORDER BY, receberemos uma mensagem de erro como a apresentada abaixo:
Msg 1033, Level 15, State 1, Procedure aaaas, Line 5
The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.
Entretanto, uma maneira de contornar esta limitação é utilizarmos a opção PERCENT como mostra o exemplo abaixo:
CREATE VIEW vclientes
AS
SELECT TOP 100 PERCENT * FROM customers
WHERE region=’SP’
ORDER BY CompanyName
GO
Sendo assim, utilizando a opção PERCENT, será possível incluir o ORDER BY em uma view e ainda obter todos os registros.

