1

以前に一度見たことがあるので、あなたがこれを行うことができることは知っていますが、どこでそれを行う必要がなかったかを忘れてしまいました。

Employees というテーブルがあり、さまざまな従業員データがあります (当然)。テーブル内のすべての行の姓名を選択し、それらすべてをコンマ区切りの文字列に連結するクエリが必要です。

たとえば、次のようなデータの行がいくつかあります (実際にはそれよりもはるかに多くなりますが、この質問のために 2 つと仮定します)。

FName LName
---------- -----
リチャード・プレスコット
ジル・センティエリ
キャロル・ウィンガー

前述のデータを次の形式で返すことができる選択が必要です。

リチャード・プレスコット、ジル・センティエリ、キャロル・ウィンガー

よろしくお願いします。

4

6 に答える 6

8

合体使用。このようなもの:

DECLARE @Names varchar(1000)
SELECT @Names = COALESCE(@Names + ', ', '') + Name
FROM Employees
于 2009-04-30T19:29:01.027 に答える
1

それを行うためにUDFを書くことができます

CREATE FUNCTION [dbo].[fnc_GetEmpList](
@CompId numeric
) RETURNS nvarchar(1000)
BEGIN

declare @str nvarchar(1000)
set @str =''

select  @str = @str + ',' + FirstName + ' ' + LastName from Employees


--remove the last comma
if(@str<>'')
    set @str = right(@str,len(@str)-1)

return @str


END
于 2009-04-30T19:27:29.207 に答える
0

多分これが役立つかもしれません。この質問は以前に尋ねられました。 サブクエリからの複数の行を単一の区切りフィールドに「結合」するSQL Server関数を作成する方法は?

于 2009-04-30T19:28:58.733 に答える
0

MySQL を使用している場合、それを行う GROUP_CONCAT という優れた関数があります。http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

于 2009-04-30T19:35:10.047 に答える
0

これは完璧ではありませんが、ほとんどの場合はそこに到達できます

declare @count int
declare @i int
declare @string nvarchar(max)
declare @name nvarchar(100)

declare @Employees (EmpName nvarchar(100), ID int identity(1,1)

insert into @Employees (EmpName)
select FirstName + ' ' + LastName
from Employees


select @count=count(*) from @Employees
set @i=1
set @string=''


while (@i<=@count)
begin

    select @name = EmpName from @Employees where ID=@i

    set @string = @string + ',' + @name

    set @i=@i+1
end
于 2009-04-30T19:36:38.577 に答える