我的表格每年每位员工有一条记录。如果今年未记录员工数据,应该如何查询才能更改可见性。
列名是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,但是我的技能尚未达到此水平。
答案 0 :(得分:1)
SELECT CASE COUNT(*) WHEN 0 THEN 'Form1' ELSE 'Form2' END AS ShowForm
FROM
TABLE
WHERE employee_Id = '$CurrentUserId$'
AND CreatedOn > DATEADD(year,-1,GETDATE())
答案 1 :(得分:0)
在检查记录是否存在时,请使用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的解决方案。