仅当上一个值小于插入到SQL Server表中的新值时,才开始存储过程
我有一个存储过程。我只希望它在日期值高于上一条记录时插入新值仅当上一个值小于插入到SQL Server表中的新值时,才开始存储过程,sql,sql-server,Sql,Sql Server,我有一个存储过程。我只希望它在日期值高于上一条记录时插入新值 Department Change Date ------------------------------------ Catering 3 2018-01-01 08:09:00.000 - Current Record Department Change Date ----------------------------------------------- Catering
Department Change Date
------------------------------------
Catering 3 2018-01-01 08:09:00.000 - Current Record
Department Change Date
-----------------------------------------------
Catering 3 2018-01-02 09:10:00.000 - New record to be inserted
到目前为止我已经知道了,但是很明显选择是错误的。我想在Insert
语句之前执行类似的操作
if select top 1 *
from database.[dbo].[DepartmentChange]
where Department = @Department
and Date > @Date
order by Date desc
begin
请在这里提供一些非常模糊的细节,但我想你正在寻找类似的东西
if not EXISTS
(
select *
from database.[dbo].[DepartmentChange]
where Department = @Department
and Date > @Date
)
begin
--do your insert
end
else
begin
--do something else here
end
这里的细节相当模糊,但我认为你正在寻找类似的东西
if not EXISTS
(
select *
from database.[dbo].[DepartmentChange]
where Department = @Department
and Date > @Date
)
begin
--do your insert
end
else
begin
--do something else here
end
模糊的问题。我假设@Date,@部门来自新记录。所以也许像这样
if @Date > (select isnull(max(date),'1500-01-01') from database.[dbo].[DepartmentChange]
where Department = @Department)
begin
insert statement here
end
模糊的问题。我假设@Date,@部门来自新记录。所以也许像这样
if @Date > (select isnull(max(date),'1500-01-01') from database.[dbo].[DepartmentChange]
where Department = @Department)
begin
insert statement here
end
样本数据和期望的结果将非常有用。你说你想做一个插入,但是你的代码没有
insert
语句。首先,你缺少if语句的另一半<代码>如果(选择TOP 1…<@YourInputVariable…可能是您正在尝试的,但是很难用这么少的代码来判断。根本不清楚您在问什么或试图做什么。示例数据和期望的结果将非常有帮助。你说你想做一个插入,但是你的代码没有insert
语句。首先,你缺少if语句的另一半<代码>如果(选择前1…可能是您正在尝试的,但很难用这么少的代码来判断。根本不清楚您在问什么或试图做什么。@Joey Sonic-如果您只想在满足条件时插入(而不是其他条件时插入)我建议将其作为where谓词添加到insert语句中,而不是使其变得如此复杂。@Joey Sonic-如果您只想在满足条件时插入(而不是其他条件),我建议将其作为where谓词添加到insert语句中,而不是使其变得如此复杂。