2013-10-31 20 views
5

私はいくつかの値を持っているSQL Serverのテーブルを持っています。別名で括弧で飾る

[11],[3],[4] 

今私の要件は、私が[3],[4],[11]として出力が必要です。以下のようにたとえば、

StationId 
----- 
3 
11 
4 

私は、以下のように以下のような出力が

select STUFF((SELECT distinct (',' + QuoteName(c.StationId)) 
      FROM Analytics c 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 

をクエリを書かれています。

select STUFF((SELECT distinct (',' + QuoteName(c.StationId)) 
      FROM Analytics c ORDER BY c.StationId 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 

としてクエリを書き直すときだから私は、SELECT DISTINCTが指定されている場合、例外の下の項目BY

ORDERが選択リストに表示される必要があります取得しています。

私にいくつかの提案をしてください。

答えて

11

あなたはDISTINCTを削除し、ORDER BYで使用するGROUP BYを追加することで、あなたのコードを変更することができます

select STUFF((SELECT (',' + QuoteName(c.StationId)) 
      FROM Analytics c 
      group by c.StationId 
      ORDER BY c.StationId 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 

SQL Fiddle with Demo

を参照してください。