私は2つのテーブルを持っています、contact
そしてmembership
これが私のテーブルのデータです:
コンタクト:
SERIALNUMBER TITLE FIRSTNAME SURNAME
1 Mr John Doe
2 Mrs Jane Doe
メンバーシップ:
MEMBERSHIPID NAME SERIALNUMBER
1 TEST 1
1 TEST 2
次の SELECT ステートメントを作成すると、次のようになります。
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 M.MEMBERSHIPID=@MEMBERSHIPID;
RETURN @name_to_return ;
END;
この関数を次のように呼び出します。
SELECT [dbo].[fnGetMemberNames](1)
しかし、結果は1行しか得られません。
Mrs Jane Doe
改行またはカンマ区切りのリストが表示されるはずですMr John Doe