1

このステートメントからレコードを取得する方法を誰か教えてもらえますか

  • 過去 x か月の月間最優秀従業員ではない従業員をランダムに選択します

テーブル 従業員
ID
従業員名

テーブル EmployeeOfTheMonth
ID
EmployeeID
MonthStartedDate
MonthEndedDate

どうもありがとうございました

4

2 に答える 2

2
select top 1 id from employee as emp 
where not exist(
    select top 1 * 
      from employeeofthemonth as em 
      where em.id = emp.id and dateadd(m, -6, getdate()) < monthendeddt )
order by newid()

...またはそれに近いもの。私はSQLを実行しませんでしたが、mssqlサーバーでは、これはほぼ正しいはずです。

于 2009-05-07T02:33:24.280 に答える
0

最後の回答の変更、INステートメントを使用することを好みます


DECLARE @xMonth INT
SET @xMonth = 3

SELECT TOP 1 ID FROM Employee WHERE ID NOT IN (SELECT EmployeeID FROM EmployeeOfTheMonth WHERE DATEADD(m, -@xMonth, GETDATE()) < MonthEndedDate) ORDER BY NEWID()

于 2009-05-08T08:20:50.193 に答える