Sql server 2008 如何在每个月的最后一天输入列值?

Sql server 2008 如何在每个月的最后一天输入列值?,sql-server-2008,Sql Server 2008,表1: Day Campaign Placement Site Impressions 3/1/2014 Boy Dog ROS_728x90 CNN 100 3/2/2014 Boy Dog Leaderboard ESPN 250 3/3/2014 Boy Dog RM_Something_300x2

表1:

Day         Campaign    Placement               Site    Impressions
3/1/2014    Boy Dog         ROS_728x90              CNN         100
3/2/2014    Boy Dog         Leaderboard             ESPN    250
3/3/2014    Boy Dog         RM_Something_300x250        CNN         38
3/2/2014    Boy Dog         ROS_728x90              CNN         102
表1为每日数据。表2为月报表

表2:

Month   Year    Campaign    Placement        Site    Actual Cost
3           2014    Boy Dog         ROS_728x90       CNN            1000
3           2014    Boy Dog         Leaderboard      ESPN           850
3           2014    Boy Dog         RM_Something_300x250 CNN            421
从表1和表2中,我想制作最终的表,如下所示。此外,从表2我只想包括成本,这是每月的基础,并希望在每个月的最后一天为所有安置设置,你可以在下面的最后一个表中看到

有数千个位置,我想对所有位置做相同的事情,正如我在最后一个表中提到的,只对一个位置。我正在使用SQLServer2008R2

最终表格:

Day Campaign    Placement   Impressions Cost
3/1/2014    Boy Dog ROS_728x90  100          0
3/2/2014    Boy Dog ROS_728x90  102          0
3/3/2014    Boy Dog ROS_728x90  102          0
3/4/2014    Boy Dog ROS_728x90  102          0
3/31/2014   Boy Dog ROS_728x90  500          0
3/31/2014   Boy Dog ROS_728x90  0            1000
如果你想选择

select *, cost from 
table1 t1
left join table2 t2 
on year(t1.Day) = t2.year
 and month(t1.Day) = t2.month
对于仅适用于最后一天的选择成本(如果我理解),请使用此选择

select *,
     case
         when  DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, t1.day) + 1, 0)) = t1.day then cost
         else 0
     end
from table1 t1
left join table2 t2 
on year(t1.Day) = t2.year
and month(t1.Day) = t2.month

@用户3402335:谢谢你的建议,但是你能告诉我哪些数据属于哪一列吗?正如您提到的p1.data和p.data(data=?),我已经修改了查询。我不能回答,所以我刚才才回答。非常感谢你的帮助。根据你们的建议,我可以用它创建一个表格,但我想把所有的成本值放在每个月的最后一天。我该怎么做?在月的最后一天,你想要每天的成本总和吗?不是每天,因为成本是基于每月的基础。所以我想要安置基地的总成本。