2014-07-08 3 views
-1

데이터를 선택할 때 간단한 조인을 통해 일부 열의 값을 해결할 수 있지만 전부는 아닙니다. 대부분의 열은 10997과 같이 하나의 데이터 값을 가지고 있지만 다른 열은 10997, 10889, 10123과 같은 데이터 값이 여러 개 있습니다. 필자가 필요로하는 텍스트에 세 개의 개별 값을 해결하는 함수를 만들었지 만, 그것을 사용하는 방법을 알아 내려고하는 데 어려움이 있습니다. 나는 기본이내 함수를 호출하는 방법을 잘 모르겠 음

은 다음과 같이 조인

SELECT COLUMN1, COLUMN2, COLUMN3 
FROM TABLE1 A 
JOIN TABLE2 B ON A.ID = B.ID 

이의 결과는 다음과 같을 것입니다 : 내가 사용을 만들어

Column1   Column2      Column3 
    1  11272, 11273, 11274, 11277   7712 

기능은 변수와 테이블 변수를 선언했다.

SELECT COLUMN1, dbo.MyFunction(COLUMN2), COLUMN3 
FROM TABLE1 A 
JOIN TABLE2 B ON A.ID = B.ID 

이 결과 : 내가 할 수 있도록하고 싶습니다 무엇

이 같은 것입니다

Column1   Column2      Column3 
    1  Radio, Flyer, Internet, Bar   7712 

문제는 내 함수가 변수를 사용하는 것이 내가 할 수 없습니다 SQL (테이블 값 함수, 저장된 proc 등)에 넣을 위치를 찾으십시오. 그래서 어떻게 사용하고 싶은지를 알 수 있습니다. 각 영역마다 고유 한 제한이 있습니다.

편집 : 저는 여기에 제 기능을 위해 생성 된 코드이며, 현재는

DECLARE @looper INT, @res VARCHAR(100) 
DECLARE @outList VARCHAR(300) 

SET @outList = '' 

DECLARE @tmpa TABLE (Item INT) 

INSERT INTO @tmpa 
SELECT Item 
FROM fn_Split (', ', @input) 

SELECT @looper = MIN(Item) 
FROM @tmpa 

WHILE @looper IS NOT NULL 
    BEGIN 
     SELECT @res = NAME 
     FROM FSM_CustomFormSelectOptions CFSO 
     WHERE ID = @looper 
     --print @res 
     SET @outList = @outList + @res + ', ' 

     SELECT @looper = MIN(Item) FROM @tmpa WHERE Item > @looper 
    END 

    SET @outList = LEFT(@outList, LEN(@outList)-1) 

    INSERT INTO @Answers 
    VALUES(@outList) 

    RETURN 

샘플 호출하는 다중 문 테이블 반환 함수입니다 : 당신은 아무것도 반환하지 않습니다

select * from fn_GetAnswerText('11273, 11274, 11275') 
+0

** 우리는 ** 귀하의 ** 기능 **을 사용하는 방법을 알려 드리고자합니다. ** ** 귀하 ** 당신이 당신이 요구하는 것을 볼 수 있도록 코드를 제공하지 않는다면 **을 썼습니다. –

+0

기본 조인의 결과가 그렇게 보이지 않습니다. – Paparazzi

+0

출력으로 생성하고자하는 기능이 잘못되었습니다. 원하는대로 사용할 수 있도록 테이블이 아닌 쉼표로 구분 된 값 목록을 포함하는 VARCHAR을 리턴해야합니다. –

답변

0

RETURN @outList

+0

이렇게하면 오류가 발생합니다. varchar 값 'Facebook, Email, Flyer'을 데이터 유형 int로 변환 할 때 변환이 실패했습니다. 그 이유는 RETURN이 INT가 아니고 문자열이 아니기 때문입니다. – Baub

+0

그런 다음 함수를 변경하여 문자열을 반환하십시오. – Paparazzi

관련 문제