2017-05-15 3 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

* 오류 이름을 연결하려고합니까? 당신은 많은 설명을 발견하고이를 수행하는 방법에 관한 SO 질문을 중복 할 것입니다. –

답변

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

에 영향을 미치지 않습니다. 안녕하세요, 이 오류가 나타납니다 : 하위 쿼리가 두 개 이상의 값을 반환했습니다. 하위 쿼리가 =,! =, <, <= , >,> = 또는 하위 쿼리가 식으로 사용될 때이 하위 쿼리가 계속되는 경우에는 허용되지 않습니다. – 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