2014-11-21 70 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表變量傳遞到函數。