2014-11-21 44 views
0

1)我有行动的列表写入临时表1的查询:如何添加包含值列表的附加列?

declare @table1 table (ActionName varchar(250), ActionDate datetime, ... Description varchar(100)) 

insert into @table1(ActionName, ActionDate, ... Description) 
select --Search actions by ActionName 

的行动可以有多个动作日期,这是很重要的,这意味着我们可以有多个记录具有相同动作名称,但不同的行动日期。

2)我不得不减少表1来获取所有行动的名字只出现一次,但与其他字段DateList(逗号分隔字符串)应包含所有日期的行为(ActionDate场)对这一行动的清单:

declare @table2 table (ActionName varchar(250), ActionDate datetime, ... Description varchar(100), DateList varchar(4000)) 

我知道如何创建行动的日期列表:

declare @dateList varchar(4000) 
select @dateList = coalesce(@dateList + ', ', '') + convert(varchar, ActionDate, 120) 
from @temp 

但是,我不知道如何将它的整体解决方案。

回答

1

你需要用你的列表创建代码的功能,然后用它在你的表是这样的:

insert into @table2 
select ActionName, uf_GetDateList(ActionName) 
from @table1 
group by ActionName 

现在的功能本身就是一个棘手的部分。您需要以某种方式将@ table1传递给那里。您可以把@表1到一个临时表#table1的,那么你会做这样的事情:

select @dateList = coalesce(@dateList + ', ', '') + convert(varchar, ActionDate, 120) 
from #temp1 
where [email protected] 

或者您可以使用table-valued parameter表变量传递到函数。