Artigo: 890771 - Última revisão: sexta-feira, 2 de Novembro de 2007 - Revisão: 1.5

Recebe uma mensagem de erro quando executa uma consulta que contenha um alias que tem o mesmo nome que duas ou mais colunas na cláusula ORDER BY

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Expandir tudo | Reduzir tudo

Sintomas

Quando tenta executar uma consulta no Microsoft SQL Server 2000, receberá a seguinte mensagem de erro:
Erro de servidor: 169, nível de 15, estado 3, linha 8
Uma coluna foi especificada mais do que uma vez pela ordem por lista. Colunas pela ordem por lista têm de ser exclusivas.
Este problema ocorre quando se verificam as seguintes condições:
  • A consulta contém dois ou mais colunas que têm o mesmo nome na ORDER BY cláusula.
  • A consulta contém um alias na cláusula SELECT com o mesmo nome que duas ou mais colunas na cláusula ORDER BY.
Por exemplo, quando executa o seguinte script Transact-SQL, receberá esta mensagem de erro:
USE Northwind
GO
SELECT TOP 1 customers.CustomerID as customerid,
  customers.CompanyName as companyname
 FROM customers INNER JOIN orders
  on customers.CustomerID = orders.CustomerID
 ORDER BY
  customers.CustomerID ASC,
  orders.CustomerID DESC
GO

Causa

Este problema ocorre porque a lista de cláusula ORDER BY têm de ser exclusiva. Quando é especificado um alias que tem o mesmo nome na cláusula SELECT, lista de cláusula ORDER BY já não é exclusiva.

Como contornar

Para contornar este problema, deve certificar de que o alias especificados na cláusula SELECT é exclusivo se for para incluir a coluna na lista de cláusula ORDER BY. Por exemplo, quando executa o seguinte script Transact-SQL, nenhuma mensagem de erro é devolvida:
USE Northwind
GO
SELECT TOP 1 customers.CustomerID  as customerid1,
  customers.CompanyName as companyname
 FROM customers INNER JOIN orders
  on customers.CustomerID = orders.CustomerID
 ORDER BY
  customers.CustomerID ASC,
  orders.CustomerID DESC
 GO

Ponto Da Situação

Este comportamento ocorre por predefinição.

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
Palavras-chave: 
kbmt kbquery kbinfo kbtshoot kbprb KB890771 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 890771  (http://support.microsoft.com/kb/890771/en-us/ )