2016-12-05 5 views
0

このクエリをmysqlからSQL Serverに変換しようとしています。そこに他の情報に基づいてGROUP_CONCATからSTUFFへの変換の戻りエラー

SELECT TOP 50 m.*, 
(SELECT GROUP_CONCAT(lookup_id) as ids FROM data_lookups_ref WHERE ref_id = m.member_id and lu_type = 'prof_accr_status') as prof_accr_status_ids 
FROM members m; 

、私はしかし、私は、次のエラーが発生します。この

SELECT TOP 50 m.*, 
id_list = STUFF((
      SELECT ',' + lu.lookup_id 
      FROM data_lookups_ref lu 
      WHERE lu.ref_id = m.member_id 
      FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') 
FROM members m; 

にそれを変換しています。

ERROR: SELECT failed because the following SET options have incorrect 
settings: 'ARITHABORT'. Verify that SET options are 
correct for use with indexed views and/or indexes on computed 
columns and/or filtered indexes and/or query notifications 
and/or XML data type methods and/or spatial index operations. 
Error 
Code: 1934 

何が間違っていたかについてのご意見をお待ちしております。

+0

はMYSQLで働いTOPですかあなたの代わりにLIMITを言及したかったです? – Susang

+0

クエリの最初に 'SET ARITHABORT ON;'を試してください。また、[全般](http://dba.stackexchange.com/a/95090/65699)を見て、デフォルトでサーバー全体またはデータベースごとに設定してください。 –

+0

TT..Thanks .. get ERROR:varchar値 '、' をデータ型intに変換するときに変換に失敗しました。 エラーコード:245 .. SET ARITHABORT ON; – Jason

答えて

1

あなたはこれを試してみてくださいすることができ:

SELECT TOP 50 m.*, 
STUFF((
     SELECT TOP 50 ',' + convert(varchar(10), lu.lookup_id) 
     FROM data_lookups_ref lu 
     WHERE lu.ref_id = m.member_id 
     FOR XML PATH('')),1,1,'') AS ids 
FROM members m 
+0

こんにちは。次のエラーが発生しました:エラー:varchar値 '、' をデータ型intに変換するときに変換に失敗しました。 エラーコード:245 – Jason

+0

これは機能しました。intをcharにキャストするだけでした。SELECT TOP 50 m。*、 id_list = STUFF(( SELECT '、convert + varchar(10)、lu.lookup_id ) FROM data_lookups_ref lu WHERE lu.ref_id = m.member_id FOR XML PATH( '')、TYPE).value( '。'、 'NVARCHAR(MAX)')、1、 '') FROMメンバーm; – Jason

関連する問題