@類別NCHAR(50),
@價格小數(10,2),
@StartDate日期,
@結束日期日期,
@Index INT,
@TotalDayDiff INT,
@當前月開始日期,
@當前月末日期
聲明@測試表
(
ID INT IDENTITY(1,1),
房間INT,
類別NCHAR(50)、
價格小數(10,2),
開始日期日期,
結束日期
)
INSERT @Test SELECT 1905,N' rent ',3000,' 2015-02-06 ',' 2015-04-05 '
UNION SELECT 2000,N '您所欠',5555,' 2014-04-20 ',' 2015-02-07 '
SELECT * FROM @Test
聲明@Test2表
(
當前月字符(7),
房間INT,
類別NCHAR(50)、
價格可變字符(50)
)
SET @Index = 1
WHILE @ Index & lt=(從@Test中選擇最大值(ID))
開始
SELECT @房間=房間,@類別=類別,@價格=價格,@開始日期=開始日期,@結束日期=結束日期
來自@Test
其中ID = @Index
SELECT @TotalDayDiff = DATEDIFF(日,@開始日期,@結束日期)+ 1
WHILE @ StartDate & lt= @結束日期
開始
SET @ CurrentMonthStart = @ start date
IF YEAR(@ start date)= YEAR(@ end date),MONTH(@ start date)= MONTH(@ end date)
開始
SET @CurrentMonthEnd = @EndDate
結束
其他
開始
SET @CurrentMonthEnd = DATEADD(ms,-3,DATEADD(mm,DATEDIFF(m,0,@StartDate) + 1,0))
結束
插入@Test2值(
CAST(YEAR(@ CurrentMonthStart)AS VARCHAR)+' '+CAST(MONTH(@ CurrentMonthStart)AS VARCHAR),
@房間,
@類別,
CAST(@ Price AS VARCHAR)+' * '+CAST(DATEDIFF(DD,@CurrentMonthStart,@ CurrentMonthEnd)+1 AS VARCHAR)+'/'+CAST(@ total day diff AS VARCHAR))
SET @StartDate = DATEADD(MM,1,DATEADD(MM,DATEDIFF(mm,0,@StartDate),0))
結束
SET @Index = @Index + 1
結束
SELECT * FROM @Test2