當前位置:成語大全網 - 書法字典 - SQL sever如何拆分每壹行數據?

SQL sever如何拆分每壹行數據?

聲明@Room INT,

@類別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