2013-06-15 1 views
1

У меня есть 2 таблицы, contact и membershipфункция T-SQL не возвращает все значения

Вот данные из моих таблиц:

CONTACT:

SERIALNUMBER TITLE FIRSTNAME SURNAME 
    1   Mr  John  Doe 
    2   Mrs  Jane  Doe 

ЧЛЕНСТВО:

MEMBERSHIPID NAME SERIALNUMBER 
    1   TEST  1 
    1   TEST  2 

Когда я пишу следующий ЗЕЬЕСТ:

SELECT * 
FROM CONTACT C 
INNER JOIN MEMBERSHIP M 
ON C.SERIALNUMBER=M.SERIALNUMBER 
WHERE M.MEMBERSHIPID = '1' 

Я вижу следующие результаты:

SERIALNUMBER TITLE FIRSTNAME SURNAME MEMBERSHIPID NAME SERIALNUMBER 
    1   Mr  John  Doe   1   TEST  1 
    2   Mrs  Jane  Doe   1   TEST  2 

Тогда я написал следующую функцию:

CREATE FUNCTION [dbo].[fnGetMemberNames] (@MEMBERSHIPID VARCHAR(100)) 
RETURNS VARCHAR(50) 
BEGIN 
    DECLARE @name_to_return AS VARCHAR(50); 
    SET @name_to_return = NULL; 
    SELECT @name_to_return = 
      (C.TITLE + ' ' + C.FIRSTNAME + ' ' + C.SURNAME) 
    FROM CONTACT C 
    INNER JOIN MEMBERSHIP M 
    ON C.SERIALNUMBER=M.SERIALNUMBER 
    WHERE [email protected]; 
    RETURN @name_to_return ; 

END; 

я вызываю функцию как это:

SELECT [dbo].[fnGetMemberNames](1) 

Но я получаю только одну строку результатов.

Mrs  Jane  Doe 

Я должен видеть возврат каретки или запятую список с ограничителями с Mr John Doe

+1

до голосов за мой очень совершенный вопрос :) – PriceCheaperton

ответ

2
CREATE FUNCTION [dbo].[fnGetMemberNames] (@MEMBERSHIPID VARCHAR(100)) 
RETURNS VARCHAR(max) 
BEGIN 
    DECLARE @name_to_return AS VARCHAR(max); 
    SET @name_to_return = NULL; 
    SELECT @name_to_return = ISNULL(@name_to_return,'') + 
      (C.TITLE + ' ' + C.FIRSTNAME + ' ' + C.SURNAME) + Char(13) + Char(10) 
    FROM CONTACT C 
    LEFT JOIN MEMBERSHIP M 
    ON C.SERIALNUMBER=M.SERIALNUMBER 
    WHERE [email protected]; 
    RETURN @name_to_return ; 

END; 
+0

Спасибо, как предполагалось показать возврат каретки в студии управления? Потому что он появляется как большое пространство между именами ... – PriceCheaperton

+1

Ничего, я просто сделал «запрос результатов к тексту», и он подходит отлично .. Большое вам спасибо! – PriceCheaperton

Смежные вопросы