首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于标识整数/非整数的Case When语句

问用于标识整数/非整数的Case When语句
EN

Stack Overflow用户
提问于 2017-02-01 05:37:22
回答 4查看 406关注 0票数 0

我正在为具有用于计算的Case When语句的Oracle数据库编写SQL。像'1‘这样的当前方法没有给我所有的整数,所以我正在寻找一种方法来判断如果NBR_UNITS/STD_PACK_QTY是一个整数,那么'Case Pick’,如果它是一个小数,那么'Unit pick‘。

下面是SQL现在所使用的部分:

代码语言:javascript
复制
CASE
WHEN (NBR_UNITS/STD_PACK_QTY) like '1' THEN 'Case Pick'
WHEN (NBR_UNITS/STD_PACK_QTY) < '1' THEN 'Unit Pick'
ELSE 'Error'
END "Case Picks"

下面是一个数据示例。我尝试让SQL在除法计算是任意整数时输出'Case Pick‘,如果是任意小数则输出'Unit Pick’。

Data Set

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-02-01 05:54:51

此特定示例的最简单解决方案是使用MOD函数。

代码语言:javascript
复制
CASE
WHEN MOD(NBR_UNITS,STD_PACK_QTY) > 0 THEN 'Case Pick'
WHEN MOD(NBR_UNITS,STD_PACK_QTY) = 0 THEN 'Unit Pick'
END "Case Picks"
票数 1
EN

Stack Overflow用户

发布于 2017-02-01 05:46:42

检查任何数值表达式x是否为整数的标准方法是

代码语言:javascript
复制
case when x = round(x) then ...
     when x < 1        then...
     else                  ...   end   as ....

(假设与1比较是正确的事情;不确定,我在原始帖子下面的评论中提出了一个澄清问题)。

票数 1
EN

Stack Overflow用户

发布于 2017-02-01 05:49:21

将除法与除法的trunc/floor/四舍五入进行比较。

代码语言:javascript
复制
WHEN (NBR_UNITS/STD_PACK_QTY) = TRUNC(NBR_UNITS/STD_PACK_QTY) THEN 'Case Pick'

不确定你的规则是什么,你是否可以只使用其他方法来捕获其他所有东西-例如,如果case数量是24,而他们给你36,可以吗?如果是这样,那么else基本上捕获了其他所有内容,对吧?然而,如果这不是很好,并且单位数量只有< 24,那么ELSE (NBR_UNITS/STD_PACK_QTY) < 1是有效的,否则可能是一个错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41967938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档