2

次のような選択クエリがあります。

SELECT 
ROW_NUMBER() OVER (ORDER BY T.TitleId) as Row, 
T.TitleId as TitleID, 
T.TitleSort as TitleName, 
TT.Description as TitleType, 
TS.Description as TitleOrigin,
--get genres
(select Genre.Description + ', ' from Genre where GenreId IN
(Select GenreId from TitleGenre WHERE TitleId = T.TitleId)
group by Genre.Description for xml path('')) AS Genres, ....

このコードは機能しますが、最後のコンマを取り除く方法が見つかりません。返される行は次のようになります。

Action, Drama, Romance, 

関数を使用したり、変数を宣言したりせずに、クエリで最後のコンマを削除する必要があります。それは可能ですか?ご回答ありがとうございます。

4

3 に答える 3

9

このようなものは近くにある必要があります-基本的にコンマを先頭に移動してから、STUFFで削除します。

STUFF(
        (
        select ', ' + Genre.Description from Genre where GenreId IN
(Select GenreId from TitleGenre WHERE TitleId = T.TitleId)
group by Genre.Description for xml path('')
        ), 1, 2, '') 

幸運を。

于 2013-02-11T23:09:06.640 に答える
5

Left()とを使用する次のものをいつでも使用できますLen()

select *,
  left(Genres, len(Genres)-1) as Genres
from 
(
  SELECT 
  ROW_NUMBER() OVER (ORDER BY T.TitleId) as Row, 
  T.TitleId as TitleID, 
  T.TitleSort as TitleName, 
  TT.Description as TitleType, 
  TS.Description as TitleOrigin,
  --get genres
  (select Genre.Description + ', ' from Genre where GenreId IN
  (Select GenreId from TitleGenre WHERE TitleId = T.TitleId)
  group by Genre.Description for xml path('')) AS Genres, ....
) src
于 2013-02-11T23:09:15.730 に答える
0

オプションでコンマを挿入するためにウィンドウ関数を使用して、以下のようなことを行いました。

SELECT
c.Name +
CASE WHEN 
ROW_NUMBER() OVER (PARTITION BY t.Name ORDER BY c.Name DESC)  
<>
COUNT(t.name) OVER (PARTITION BY t.Name)   then ',' else '' END

FROM sys.tables t
INNER JOIN sys.columns c
on t.Object_id = c.Object_id

FOR XML PATH('')

結果セットの最後のレコードでない限り、基本的にコンマを追加します。

于 2015-02-13T23:21:11.677 に答える