SQL CASE WHEN columnvalues = totalcolumnvalues +- 1

Posted

技术标签:

【中文标题】SQL CASE WHEN columnvalues = totalcolumnvalues +- 1【英文标题】: 【发布时间】:2021-12-27 09:44:41 【问题描述】:

我需要一些帮助来确定如何在我的查询中执行加/减 1 范围。

我正在尝试制作类似下面的东西

SELECT 

CASE WHEN (columnvalues1 + columnvalues2 + columnvalues3) = totalcolumnvalues +- 1 THEN 1 END AS flag

FROM table1

所以如果结果是 37,那么 36、37 或 38 将在 +-1 范围内,因此被标记

任何帮助将不胜感激

【问题讨论】:

【参考方案1】:

假设总数是浮点数或小数,您可以简单地使用BETWEEN 子句:

CASE WHEN columnvalues1 + columnvalues2 + columnvalues3 BETWEEN
    totalcolumnvalues - 1 AND totalcolumnvalues + 1
THEN ...

【讨论】:

感谢您的回答。正如我经常遇到的那样,答案比我最初想的要容易。您的第二个选项是我正在寻找的那个,因为它还允许浮点数在 +- 1 范围内工作【参考方案2】:

使用 ABS:

CASE WHEN ABS( (columnvalues1 + columnvalues2 + columnvalues3) - totalcolumnvalues )<=1
  THEN 1 END AS flag

【讨论】:

以上是关于SQL CASE WHEN columnvalues = totalcolumnvalues +- 1的主要内容,如果未能解决你的问题,请参考以下文章

case when用法sql

sql语句借助case when实现自动拼装where条件

Sql文的where中使用case when

SQL case when

Sqlserver的case when 用法

SQL中的decode及case when的用法