SQL:where子句中的变量值,还是类似的?

时间:2018-05-10 18:32:18

标签: sql date where between

情况: 试图在雇用后90天和雇用后1年获得员工的工资。

我一直在尝试这样的事情:

SELECT payrate
FROM dbo.table
WHERE (table.checkdate BETWEEN table.startdate +90 AND table.startdate +97)

我知道上述内容远非有效,但这只是一个简单的例子。

我认为我需要+90和+97,因为检查是每周完成的,可能不会完全落在第90天。

2 个答案:

答案 0 :(得分:0)

我猜你正在使用SQL Server。这是一种方法:

SELECT TOP (1) WITH TIES payrate
FROM dbo.table t
WHERE t.checkdate >= dateadd(day, 90, t.startdate)
ORDER BY ROW_NUMBER() OVER (PARTITION BY ? ORDER BY t.startdate);

标识每位员工的列的?

答案 1 :(得分:0)

标记第一个答案。

SELECT t.employeeid, t.payrate
FROM dbo.table t
WHERE (
  --GET CHECKS BETWEEN THE 90 AND 97 DATE RANGE
  t.checkdate >= dateadd(day, 90, t.startdate) 
  AND
  t.checkdate <= dateadd(day, 97, t.startdate) 
)

一年用365和372代替90和97。

这假设在该90天日期范围内每条记录只有一个支票/支付。