Sql server 2008 如何在每个月的最后一天输入列值?
表1: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
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=?),我已经修改了查询。我不能回答,所以我刚才才回答。非常感谢你的帮助。根据你们的建议,我可以用它创建一个表格,但我想把所有的成本值放在每个月的最后一天。我该怎么做?在月的最后一天,你想要每天的成本总和吗?不是每天,因为成本是基于每月的基础。所以我想要安置基地的总成本。