使用参数

时间:2016-01-13 17:02:27

标签: sql sql-server-2008 loops

Tbl_campaign_details_direct列出了每个广告系列的参数(CampaignDuration现在只是一个占位符)。

enter image description here

我想将该表与tbl_dim_date(仅摘录)相关联:

enter image description here

为此,我想编写一个TSQL语句,根据{{1}中定义的日期范围(=“Campaign Start”和“Campaign Finish”)自动设置tbl_dim_date中的“CampaignDetailsDirectID”列。 }}

这意味着对于20150609和20150617之间的所有DateID,CampaignDetailsDirectID列应在tbl_campaign_details_direct中获得“2”。 对于20151126和20151201之间的所有DateID,tbl_dim_date中的“1”。

对于tbl_campaign_details_direct中的一条记录 ,我的TSQL如下所示:

tbl_dim_date

如何调整此查询,以便它不仅适用于一个广告系列,还会遍历Declare @start int, @finish int, @CampaignID int Set @start = (select cast(replace(CampaignStart,'-','')as int) from [REPORTING].[dbo].[campaign_details_direct]) Set @finish = (select cast(replace(CampaignFinish,'-','')as int) from [REPORTING].[dbo].[campaign_details_direct]) While @start <= @finish Begin Update Reporting.dbo.dim_date Set CampaignDetailsDirectID = 1 --How to adjust to set respective CampaignDetailsDirectID automatically = campaign_details_direct.CampaignDetailsID? Where dim_date.DateID = @start Set @start = @start + 1 End Go -- How to iterate through all campaigns? 中的所有CampaignDetailsID?或者另一种实现相同结果的方法更有用吗?

更新了仅适用于黑色星期五的日期范围的新尝试。这里有什么明显的东西吗?

tbl_campaign_details_direct

0 个答案:

没有答案