根据当月操作上月数据
Manupilating previous month data according to current month
我有一个 table 名称 Prv_Data,其中包含上个月的报告,具有 Report_Id 和时间轴列。
Prv_Data -->
Report_ID | Timeline
---------------|--------------
01 | Weekly @Mon
01 | Weekly @Mon
01 | Weekly @Mon
01 | Weekly @Mon
02 | Weekly @Thru
02 | Weekly @Thru
02 | Weekly @Thru
02 | Weekly @Thru
02 | Weekly @Thru
我有另一个 table 名称 Cur_Month,其中包含当前月份的详细信息。
Cur_Month-->
Details | Count
--------------|--------
First Date | 05/01/2017
Last Date | 05/31/2017
Friday | 4
Monday | 5
Saturday | 4
Sunday | 4
Thursday | 4
Tuesday | 5
Wednesday | 5
现在我想将 Table 名称设为 Cur_Data,其中包含报告详细信息,但根据当前月份的工作日计数,意味着上个月的星期一计数为 4,星期四计数为5,这就是为什么 Report_ID 1 和 2 的出现,因为星期一发生了 4 次,星期四发生了 5 但现在在 current_Month 我们星期一和星期四的出现是 5 和 4(当月信息来自 Cur_Month Table) 并且根据这个我想复制 prv_month table 数据但是根据星期一和星期四的发生 --- Cur_Data
Cur_Data(期望Table)-->
Report_ID | Timeline
---------------|--------------
01 | Weekly @Mon
01 | Weekly @Mon
01 | Weekly @Mon
01 | Weekly @Mon
01 | Weekly @Mon
02 | Weekly @Thru
02 | Weekly @Thru
02 | Weekly @Thru
02 | Weekly @Thru
提前致谢:)
对我来说,您似乎也没有很好地满足您的要求。
我什么都没关注。
我唯一理解的是你想将 Cur_Month 数据转换成 Cur_Data 因为某些 format.I 不了解背景。
试试这个让我知道,
declare @Prv_Data table(Report_ID int,Timeline varchar(40))
insert into @Prv_Data VALUES
(01,'Weekly @Mon')
,(01,'Weekly @Mon')
,(01,'Weekly @Mon')
,(01,'Weekly @Mon')
,(02,'Weekly @Thru')
,(02,'Weekly @Thru')
,(02,'Weekly @Thru')
,(02,'Weekly @Thru')
,(02,'Weekly @Thru')
declare @Cur_Month table(Details varchar(40),Count varchar(40))
insert into @Cur_Month VALUES
('First Date','05/01/2017')
,('Last Date','05/31/2017')
,('Friday','4')
,('Monday','5')
,('Saturday','4')
,('Sunday','4')
,('Thursday','4')
,('Tuesday','5')
,('Wednesday','5')
;WITH Cur_Data as
(
select *
,case when Details='Monday' then '1'
when Details='Thursday' then '2' END ReportID
,case when Details='Monday' then 'Weekly @Mon'
when Details='Thursday' then 'Weekly @Thru' END Timeline
from @Cur_Month
where Details in('Monday','Thursday')
)
select REPLICATE('0',len(ReportID))+ ReportID ReportID
,Timeline from Cur_Data c
cross apply (select number
from master..spt_values where number>0
and number<=c.[count] and type='LO')cs
我有一个 table 名称 Prv_Data,其中包含上个月的报告,具有 Report_Id 和时间轴列。
Prv_Data -->
Report_ID | Timeline
---------------|--------------
01 | Weekly @Mon
01 | Weekly @Mon
01 | Weekly @Mon
01 | Weekly @Mon
02 | Weekly @Thru
02 | Weekly @Thru
02 | Weekly @Thru
02 | Weekly @Thru
02 | Weekly @Thru
我有另一个 table 名称 Cur_Month,其中包含当前月份的详细信息。
Cur_Month-->
Details | Count
--------------|--------
First Date | 05/01/2017
Last Date | 05/31/2017
Friday | 4
Monday | 5
Saturday | 4
Sunday | 4
Thursday | 4
Tuesday | 5
Wednesday | 5
现在我想将 Table 名称设为 Cur_Data,其中包含报告详细信息,但根据当前月份的工作日计数,意味着上个月的星期一计数为 4,星期四计数为5,这就是为什么 Report_ID 1 和 2 的出现,因为星期一发生了 4 次,星期四发生了 5 但现在在 current_Month 我们星期一和星期四的出现是 5 和 4(当月信息来自 Cur_Month Table) 并且根据这个我想复制 prv_month table 数据但是根据星期一和星期四的发生 --- Cur_Data
Cur_Data(期望Table)-->
Report_ID | Timeline
---------------|--------------
01 | Weekly @Mon
01 | Weekly @Mon
01 | Weekly @Mon
01 | Weekly @Mon
01 | Weekly @Mon
02 | Weekly @Thru
02 | Weekly @Thru
02 | Weekly @Thru
02 | Weekly @Thru
提前致谢:)
对我来说,您似乎也没有很好地满足您的要求。
我什么都没关注。
我唯一理解的是你想将 Cur_Month 数据转换成 Cur_Data 因为某些 format.I 不了解背景。
试试这个让我知道,
declare @Prv_Data table(Report_ID int,Timeline varchar(40))
insert into @Prv_Data VALUES
(01,'Weekly @Mon')
,(01,'Weekly @Mon')
,(01,'Weekly @Mon')
,(01,'Weekly @Mon')
,(02,'Weekly @Thru')
,(02,'Weekly @Thru')
,(02,'Weekly @Thru')
,(02,'Weekly @Thru')
,(02,'Weekly @Thru')
declare @Cur_Month table(Details varchar(40),Count varchar(40))
insert into @Cur_Month VALUES
('First Date','05/01/2017')
,('Last Date','05/31/2017')
,('Friday','4')
,('Monday','5')
,('Saturday','4')
,('Sunday','4')
,('Thursday','4')
,('Tuesday','5')
,('Wednesday','5')
;WITH Cur_Data as
(
select *
,case when Details='Monday' then '1'
when Details='Thursday' then '2' END ReportID
,case when Details='Monday' then 'Weekly @Mon'
when Details='Thursday' then 'Weekly @Thru' END Timeline
from @Cur_Month
where Details in('Monday','Thursday')
)
select REPLICATE('0',len(ReportID))+ ReportID ReportID
,Timeline from Cur_Data c
cross apply (select number
from master..spt_values where number>0
and number<=c.[count] and type='LO')cs