2016-05-27 6 views
0

Ich habe Customers Tisch und ich möchte kürzeste und längste Kundennamen ziehenBestellen zwei meged abfragt

ich es wie folgt tun:

(SELECT TOP 1 CustomerName, LEN(CustomerName) AS LENGTH FROM Customers ORDER BY LEN(CustomerName) ASC, CustomerName ASC) 
UNION 
(SELECT TOP 1 CustomerName, LEN(CustomerName) AS LENGTH FROM Customers ORDER BY LEN(CustomerName) DESC, CustomerName ASC) 

ich zwei korrekte Ergebnisse erhalten, aber jetzt will ich sortieren sie von LENGTH Spalte. Ich habe dies versucht:

SELECT * FROM 
(
(SELECT TOP 1 CustomerName, LEN(CustomerName) AS LENGTH FROM Customers ORDER BY LEN(CustomerName) ASC, CustomerName ASC) 
UNION 
(SELECT TOP 1 CustomerName, LEN(CustomerName) AS LENGTH FROM Customers ORDER BY LEN(CustomerName) DESC, CustomerName ASC) 
) 
ORDER BY LEN(CustomerName) ASC 

Aber es gibt mir diese Fehlermeldung: Syntax error in JOIN operation.

Wie kann ich das tun?

+1

Ich sehe nicht einmal ein 'JOIN' in der Quelle, die Sie freigegeben haben –

Antwort

1
select customername,len(customername) as namelength 
from (SELECT MAX(LEN(CustomerName)) AS MAXLENGTH, MIN(LEN(CustomerName)) AS MINLENGTH 
     FROM Customers) lens 
join customers c on c.len(customername) = lens.maxlength or c.len(customername) = lens.minlength 
order by namelength desc, customername