2017-07-27 24 views
1

私はどこで別名と順序を使用するか問い合わせをしています。 order by節で使用される2つの列がSelect文で使用されますが、それらは連結されています。私は実行すると、クエリのエラーメッセージが表示され:私はsi_lastsi_firstが1つのより多くの時間が、別の選択することです見つけSQL Order By DISTINCT?

SELECT DISTINCT 
    si_last +' '+si_first AS UserName 
FROM Users 
ORDER BY si_last,si_first 

一つの解決法:ここで

Msg 145, Level 15, State 1, Line 1 
ORDER BY items must appear in the select list if SELECT DISTINCT is specified. 

は私のクエリの例です。このような何か:上記

SELECT DISTINCT 
    si_last +' '+si_first AS UserName, 
    si_last, 
    si_first 
FROM Users 
ORDER BY si_last,si_first 

ソリューションは、非常に非効率的なようで、この問題を回避するために、他の方法がある場合、私は思ったんだけど。ご提案があれば教えてください。ありがとうございました。

+0

[SELECT DISTINCTが指定されている場合、ORDER BY項目が選択リストに表示される必要があります](HTTPSの可能性のある重複:を//stackoverflow.com/questions/265628/order-by-items-must-appear-in-the-select-list-if-select-distinct-is-specified)[ORDER BY理由の理由は、選択する場合はリストを選択](https://stackoverflow.com/questions/18584520/reason-for-order-by-items-must-appear-in-the- – hatchet

答えて

0

ただ、完全な表現を使用します。GROUP BYを使用し、また

SELECT DISTINCT (si_last + ' ' + si_first) AS UserName 
FROM Users 
ORDER BY UserName; 

を:

SELECT (si_last + ' ' + si_first) AS UserName 
FROM Users 
GROUP BY si_last, si_first 
ORDER BY si_last, si_first; 
+1

これらの2つのうちの最初のものは、lastとfirstとが別々に注文された場合とは若干異なる注文になる可能性があります。たとえば、スペースで区切られた2つの姓の場合(ヒスパニックの姓では典型的) – hatchet