您好:
如下資料
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
