sql-server - SQL 中的 CASE WHEN 公式
问题描述
你能仔细检查一下我的公式是否正确吗?逻辑应该是如果 itemname 是 WEB,QTYORDERED 应该被 4 堆栈划分
在我的示例中,我得到的订单只有 1,但结果显示为 0。:(
正确的结果应该是 0.25 对吧?
CASE
WHEN dbo.WorkOrderDetails.ItemNo = 'Web'
THEN ROUND(dbo.WorkOrderDetails.QtyOrdered / 4, 0)
ELSE dbo.WorkOrderDetails.QtyOrdered
END AS NumberofItems
解决方案
您的列的数据类型是什么?QtyOrdered
如果是INT
- 那么您正在执行整数除法( QtyOrdered / 4
),如果QtyOrdered
值为 1、2 或 3,则结果为0。
如果您希望结果带有小数值,则需要使用小数股息 - 如下所示:
CASE
WHEN dbo.WorkOrderDetails.ItemNo = 'Web'
THEN ROUND(dbo.WorkOrderDetails.QtyOrdered / 4.0, 0)
ELSE dbo.WorkOrderDetails.QtyOrdered ^^^^
END AS NumberofItems
这将QtyOrdered = 1
变成 0.25 等。
推荐阅读
- python - 如何在pyqt5中改变QGraphicsSvgItem的颜色?
- java - 无法使用 Spring Boot 从资源中读取文件
- python - 如何解决jupyter中的变量未定义错误
- javascript - 如何将对象从一个函数解析到另一个函数?
- google-colaboratory - 如何在 Google Colaboratory 上使用 Conda 安装 Bob
- angular - 角垫选择
- php - Wordpress XAMPP Apache 无法启动
- r - 在控制图 RStudio 中修改轴
- git - 如何在不删除本地更改的情况下删除所有未推送的提交
- awk - 删除文本文件中 url 字符串的空间