我的表中每个员工每年都有一条记录。如果今年没有记录员工数据,应该使用什么查询来更改可见性。
列名是employee_name
、employee_Id
、rating
、CreatedOn
,其中CreatedOn
基本上是时间戳。
假设有两个表单,form1
和form2
,它的可见性取决于用户输入。如果用户已提交form1
,则只能看到form2
。恰好在一年后,各个用户可以再次看到form1
。
我尝试了以下命令,但不起作用
SELECT COUNT(*) FROM
TABLE
WHERE employee_Id = '$CurrentUserId$'
AND CreatedOn > DATEADD(year,-1,GETDATE())
如果为query = 0
,则显示form1
,否则显示form2
我知道基本的SQL,但我的技能达不到这个水平。
发布于 2019-01-16 13:26:55
SELECT CASE COUNT(*) WHEN 0 THEN 'Form1' ELSE 'Form2' END AS ShowForm
FROM
TABLE
WHERE employee_Id = '$CurrentUserId$'
AND CreatedOn > DATEADD(year,-1,GETDATE())
发布于 2019-01-16 13:33:46
当检查记录是否存在时,使用EXISTS
/ NOT EXISTS
。COUNT()
将实际计算所有行,而EXISTS
将在第一行短路,因此速度更快。
IF EXISTS (SELECT 'record this year' FROM [TABLE] T WHERE T.employee_Id = '$CurrentUserId$' AND T.CreatedOn > DATEADD(YEAR,-1,GETDATE()))
BEGIN
-- Do stuff if record this last year
END
ELSE
BEGIN
-- Do stuff if no record this last year
END
如果你需要在1条SELECT
语句中使用它,你可以使用Dheerendra的解决方案。
https://stackoverflow.com/questions/54218002
复制