我使用的是SQL Server 2008 R2,我没有 LAG 和 LEAD 功能。
我有这个初始表,我需要 StartDate 等于上一条记录的 EndDate 加上 1 天。见结果表。
问候, 埃利奥·费尔南德斯
我正在尝试创建一个存储过程,并将表的名称作为参数传递,我收到此消息:必须声明表变量“@tblName”。
我必须改变什么才能让它工作?
CREATE PROCEDURE [usp_SaveToErrorLog]
@tblName as nvarchar(50),
@subject as nvarchar(30)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(@tblName))
Begin
Insert Into @tblName
(ErrorNumber, ErrorMessage, ErrorProcedure, ErrorState, ErrorSeverity, ErrorLine)
Select
ERROR_NUMBER(), ERROR_MESSAGE(), ERROR_PROCEDURE(), ERROR_STATE(), ERROR_SEVERITY(), ERROR_LINE()
End
END
我有这张表,但没有足够的 SQL 来进行查询以实现下图所示的结果。
CREATE TABLE myDates (
id integer NOT NULL,
startDate date NOT NULL,
endDate date NOT NULL
);
insert into myDates(id, startDate, endDate)
values
(1, '2017-12-26', '2017-12-29'),
(2, '2017-12-29', '2017-12-29'),
(3, '2017-12-14', '2017-12-29'),
(4, '2017-12-18', '2017-12-21'),
(5, '2017-12-26', '2017-12-29'),
(6, '2017-12-28', '2017-12-29'),
(7, '2017-12-26', '2017-12-29'),
(8, '2017-12-25', '2017-12-27')
查看“startDate”和“endDate”之间的所有日期并计算每天出现的总数:
我刚刚从 Excel 文件中添加了这张图片,以更好地说明我想要实现的目标。我正在从 excel 转向 sql。忽略周末和 22/12 和 25/12。
Regrads,埃利奥·费尔南德斯