Case语句允许在结果上使用where子句

时间:2019-07-15 09:53:48

标签: sql sql-server

我正在这样的查询中进行以下操作

  case  WHEN PreAllocationDespatch IS NULL THEN 0 ELSE PreAllocationDespatch END AS 'Allocated'
  case  WHEN LineQuantity IS NULL THEN 0 ELSE LineQuantity END AS 'Ordered'
  case  WHEN LineQuantity IS NULL THEN 0 ELSE LineQuantity - PreAllocationDespatch   END AS 'Balance'    

哪一个还好,可以做什么,但我需要说

Where Balance != LineQuantity 

给我列出尚未执行操作的产品的列表。但是因为它是一个动态列,所以我似乎无法做到这一点。有问题的列都是整数。

  

PreAllocationDespatch

     

LineQuantity

3 个答案:

答案 0 :(得分:0)

对于结果值,您可以使用

https://github.com/my_repo.git

或在以下情况重复

having  Balance != LineQuantity  

答案 1 :(得分:0)

您必须对where语句进行第二次简单的第二次选择,或者在查询允许的情况下使用“ having”(我们没有完整的查询,因此我们不知道)

答案 2 :(得分:0)

您可以使用子查询,CTE或横向联接来定义值。

但是,将逻辑表达为以下更为简单:

where coalesce(LineQuantity, 0) <> PreAllocationDespatch