如何使用SQL查询管理同一表的多个状态。 我有两个GridView来显示基于 EvaluationStatus 和 CertificateStatus 的数据。
EvaluationStatus 的默认值为Not Assigned
, CertificateStatus 为Awaited
。
在第一个GridView中使用以下查询正确显示Cleared
个用户数据。
select * from MyTable where EvaluationStatus='Cleared' and CertificateStatus='Cleared'
在第二个Gridview中没有显示正确的数据以显示未清除的用户但没有想到编写该查询,下面写了一个查询但没有正常工作。
select * from MyTable where EvaluationStatus in('Not Assigned','Cleared') and CertificateStatus='Awaited'
第二个gridview查询,如果用户上传证书,则意味着状态将从Awaited
更改为cleared
。然后上面的查询不起作用,因为现在EvaluationStatus ='未分配'和CertificateStatus ='已清除'在表格中。
答案 0 :(得分:0)
您可以使用case where语句使用条件where子句 -
select * from MyTable where 1 = case when EvaluationStatus = 'Not Assigned' and CertificateStatus='Awaited' then 1
when EvaluationStatus = 'Cleared' and CertificateStatus='Awaited' then 1
when EvaluationStatus = 'Not Assigned' and CertificateStatus='Cleared' then 1
else 0 end
答案 1 :(得分:0)
我们也可以通过以下查询来做。
select *
from MyTable
where RegistrationId in (select RegistrationId from MyTable where EvaluationStatus in('Not Assigned','Cleared') and CertificateStatus='Awaited')
or RegistrationId in (select RegistrationId from MyTable where EvaluationStatus in('Not Assigned') and CertificateStatus in('Awaited','Cleared'))