我需要根据ReportingMonth值计算StartDate和EndDate
示例数据:
CREATE TABLE TestDate (
[ID] [int] NULL,
[PerID] [int] NULL,
[CommID] [int] NULL,
[ReportingMonth] [nvarchar](200) NULL,
[Number] [nvarchar](200) NULL
)
Insert into TestDate ( [ID],[PerID],[CommID],[ReportingMonth],[Number])
Values ('3820','12508','7','Jul-16','31');
Insert into TestDate ( [ID],[PerID],[CommID],[ReportingMonth],[Number])
Values ('10235','12498','58','Aug-16','1');
Insert into TestDate ( [ID],[PerID],[CommID],[ReportingMonth],[Number])
Values ('10235','12498','2','Jul-16','15');
我需要根据ReportingMonth计算StartDate和EndDate,并使用Number列的差异
StartDate和EndDate 的预期输出应该是这样的
ID PerID CommID ReportingMonth StartDate Number EndDate
3820 12508 7 Jul-16 30/06/2016 31 31/07/2016
10235 12498 58 Aug-16 15/07/2016 1 1/08/2016
10235 12498 2 Jul-16 15/07/2016 15 1/08/2016
我用来计算一个月的开始日期的SQL查询正在运行,但是当有多个相同的ID时,它无法正常工作
select [ID]
,[PerID]
,[CommID]
,[ReportingMonth]
,[Number]
,DATEADD(DAY, -(cast([Number] as int)), eomonth(CAST([Number] as DateTime))) as StartDate
from TestDate
如何只使用ReportingMonth字段
来获取StartDate和EndDate谢谢, 和Sandeep
答案 0 :(得分:0)
SQL Server非常适合计算月份转换次数。所以,这应该有效:
select cast('01-' + ReportingMonth as date) as month_start,
eomonth(cast('01-' + ReportingMonth as date)) as month_end