您好:
如下資料
SELECT '1110919' 'ST', '1120918' 'END'
end時間,非月初,要把他拆成
1120901~1120918
1120919~1120930
兩筆
目前想到的是 做成兩筆
select * from (
SELECT '1110919' 'ST', '1120918' 'END'
UNION ALL
SELECT '1110919' 'ST', '1120918' 'END'
) x
在把他後續兩筆,做成日期
cross apply 沒有拆到KEY,無法2筆
是否還有其他較簡便的方式
謝謝
不好意思**** 有想到
select * from (
select *, 月底函數(END) 'END_30'
from (
SELECT '1110919' 'ST', '1120918' 'END'
) x
) y cross apply(
value(1,END ),(2,END_30)
) x(k,value)
來分拆
參考@@...
declare @Tmp table(
ID int
,[St] varchar(10)
,[End] varchar(10)
)
insert into @Tmp
values(1,'1110919','1120918')
select *
from ((
select format(
dateadd(
year
,-1911
,convert(
date
,left(Convert(int,a.St) + 19110000,6) + '01'
)
)
,N'yyyMMdd'
)
+ '~'
+ Convert(varchar,Convert(int,[St]) - 1) AreaDate
from @Tmp a
)union all(
select
Convert(varchar,[St])
+ '~'
+ format(
dateadd(
year
,-1911
,Dateadd(
day
,-1
,Dateadd(
month
,1
,convert(
date
,left(Convert(int,a.[End] + 19110000),6) + '01'
)
)
)
)
,N'yyyMMdd'
)
from @Tmp a
)) k