1

1 つの varchar という名前の変数と 1 つのcust_refint という名前の 2 つの変数がありますassociated_ids。私が達成しようとしていることは次のとおりです。

cust_ref通常、テーブルから 1 行以上返される値を指定しますCustomer。そのためのすべてのcustomer_idレコードを収集し、それらをコンマで区切られcust_refた変数に格納することに関心があります。associated_ids

customer_idこれは私がこれまでに持っている SQL であり、明らかにレコードの 1 つだけを変数にロードしています。この例に基づいて@associated_ids、次を返すように選択したいと思います75458,77397,94955

declare @cust_ref varchar(20) = 'ABGR55532'
declare @associated_ids int

select distinct @associated_ids = customer_id
from dbo.Customer
where cust_ref = @cust_ref

select @associated_ids

select *
from dbo.Customer
where cust_ref = @cust_ref

上記の結果は次のとおりです。実際にはassociated_ids、この例では変数に格納する必要があるのは 3 つですが、コマンドは最大のものをキャプチャしているため、3 つすべてをコンマで区切ってください。

ここに画像の説明を入力

4

3 に答える 3

0
declare @cust_ref varchar(20) = 'ABGR55532' --from your code
DECLARE @result varchar(100)

set @result =
(SELECT distinct (customer_id + ' ')
FROM dbo.Customer 
where cust_ref = @cust_ref --from your code
ORDER BY (customer_id + ' ')
FOR XML PATH (''))

SELECT REPLACE(RTRIM(@result),' ',',')
于 2013-07-26T14:38:35.970 に答える
0

あなたはこのようなことを試すことができます...明らかに、いくつかの調整が必要になります:

create table x (id varchar(50),num int)
insert into x (id,num) values ('75458','20')
insert into x (id,num) values ('77397','20')
insert into x (id,num) values ('94955','20')

その後、

create function GetList (@num as varchar(10)) 
returns varchar(100) 
as 
begin
  declare @List varchar(100) 
  select @List = COALESCE(@List + ', ', '') + id
  from x 
  where num = @num

  return @List

end

次に、次のようなものを使用して値を取得します。

select distinct num,dbo.GetList(num) from x
于 2013-07-26T14:41:00.607 に答える