如何使用SQL查询管理同一个表的多个状态

时间:2017-08-29 12:15:31

标签: asp.net sql-server gridview

如何使用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 ='已清除'在表格中。

2 个答案:

答案 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'))