SQL查询,根据引用列

时间:2015-08-20 12:59:15

标签: sql-server

我有两张名为contract和contractrecords的表。对于每份合同,将有多个合同记录,这意味着contractid将成为合同记录中的foriegnkey参考。合同记录中有一个状态列,其值可能为1,2,3,4。 现在我的问题是,如果合同有多个合同记录,并且所有合同都具有状态1,则合同处于活动状态。如果所有合同记录的状态都不是1,则合同处于非活动状态。如果至少一个合同记录的状态为1,那么该合同就是分离的。

如何实现这个目标?

1 个答案:

答案 0 :(得分:0)

这应该做的工作:

Select contractId, 
     status = case when total = status then 'active'
         when status = 0 then 'inactive'
         else 'partial'
     end
From (
    Select contractId, total = count(recordId), status = Sum(case when status = 1 then 1 else 0)
    From contractrecords
    Group By contractId
)

使用您的表格和列进行更新(并修复拼写错误)