2017-05-15 11 views
-1

が、私はこのクエリを持っている(機能を使用せずに)サブクエリに外部クエリから値を注入:SQL Serverが

DECLARE @Names VARCHAR(8000) 

SELECT [Number],[ErrorMessage], 
     (SELECT @Names = COALESCE(@Names + ',','') + [Name] 
          FROM [test].[dbo].[b] 
          WHERE [ErrorId] like '%' + CONVERT(NVARCHAR(20),Number) + '%') 
          )     
        as [ErrorHandlingName] 
    FROM [test].[dbo].[a] 
私の目標は、条件 WHERE [ErrorId] like '%' + CONVERT(NVARCHAR(20),Number) + '%')が使用できるようになるので、サブクエリに各 Numberを送信することです

それ。誰かが助けることができます私は機能

でサブクエリをラッピングすることなく、それを実行する必要があり

P.S

+0

テーブルについての詳しい情報を教えてください。列はどこにあるの? selectでサブクエリを使用するのではなく、派生テーブルを作成して結合する方法を見てみましょう。 – Leonidas199x

+0

あなたは、ソリューションがどのように見えているかを記述していますが、あなたがしたいことを説明するのを忘れてしまっています。あなたは混乱する用語を使用しています(値を挿入する?)、非常に珍しい構文を使用します(SELECTでサブクエリ?) –

+0

*エラー名を連結しようとしていますか?あなたは多くの説明を見つけ、これを行う方法についての質問を複製します –

答えて

1

これは機能しますか?

SELECT a.[Number],a.[ErrorMessage], 
     (SELECT COALESCE(@Names + ',','') + b.[Name] 
          FROM [test].[dbo].[b] b 
          WHERE b.[ErrorId] like '%' + CONVERT(NVARCHAR(20),a.Number) + '%') 
          )     
        as [ErrorHandlingName] 
    FROM [test].[dbo].[a] a 
+0

こんにちは、 私はこのエラーが表示されます: サブクエリは1つ以上の値を返しました。サブクエリが=、!=、<, <= , >、> =、またはサブクエリが式として使用されているときは、これは許可されません。 – ohadinho

+0

テストするサンプルデータがない場合は簡単ではありません。サンプルデータを提供できる場合は、私の回答を確認できます –

+0

申し訳ありませんが、あなたは正しいです!私は文法エラー – ohadinho

0
SELECT [Number],[ErrorMessage], 
     [ErrorHandlingName] = STUFF(( 
           SELECT ',' + [Name] AS [text()] 
           FROM [test].[dbo].[b] 
           WHERE [ErrorId] like '%' + CONVERT(NVARCHAR(20),Number) + '%' 
           FOR XML PATH ('') 
          ), 1, 1)     
    FROM [test].[dbo].[a] 
+0

これは動作しません。番号はサブクエリに影響しません – ohadinho