sql - CASE 表达式“缺少关键字”
问题描述
我目前正在尝试运行下面的 SQL 语句并且卡在case
表达式上。我试图在这里解决其他问题,但没有运气。运行以下内容时出现错误是“缺少关键字”
SELECT
A.EQNO, A.ITEMNO, A.AVG_CYCLE, A.MFG_TYPE, A.ACTCAV, A.STDCAV,
A.ORIG_WO_QTY, A.TOTAL_FLOOR_DISPO, A.ORIG_WO_QTY - A.TOTAL_FLOOR_DISPO,
这是我不确定的地方
CASE A.ACTCAV
WHEN A.ACTCAV = 2 THEN
(3600 / A.AVG_CYCLE)*2
ELSE
WHEN A.ACTCAV = 1 THEN
(3600 / A.AVG_CYCLE)
ELSE 'UNKNOWN'
END A.ACTCAV
这部分看起来不错
FROM V_RT_CYCLE_PART_COUNTS A
LEFT OUTER JOIN MFGCELL B ON A.MFGCELL = B.MFGCELL
LEFT OUTER JOIN EPLANT C ON B.EPLANT_ID = C.ID
WHERE A.MFG_TYPE = 'AIP-BLWMLD'
ORDER BY A.MFG_TYPE
最后,是否可以获取 A.ORIG_WO_QTY - A.TOTAL_FLOOR_DISPO / CASE 函数结果?
尝试从我创建的水晶报表中获取 SQL 和公式并将其放入 BI 仪表板
解决方案
您正在将 an 的元素IF
与简单和搜索的case 表达式语法相结合。您的列别名上还有一个表别名前缀,这是不允许的。
你可以这样做:
CASE A.ACTCAV
WHEN 2 THEN
(3600 / A.AVG_CYCLE)*2
WHEN 1 THEN
(3600 / A.AVG_CYCLE)
ELSE 'UNKNOWN'
END AS ACTCAV
或者
CASE
WHEN A.ACTCAV = 2 THEN
(3600 / A.AVG_CYCLE)*2
WHEN A.ACTCAV = 1 THEN
(3600 / A.AVG_CYCLE)
ELSE 'UNKNOWN'
END AS ACTCAV
在他们两个中,中间的杂散ELSE
已经被删除(你不需要在WHEN
子句之间,只在最后作为默认值)。
但是,您的两个THEN
子句将返回数字,而 while'UNKNOWN'
是一个字符串,它将在运行时抛出“ORA-00932:不一致的数据类型”。您要么需要将默认值设为数字,要么将数字显式转换为字符串。
是否可以获取 A.ORIG_WO_QTY - A.TOTAL_FLOOR_DISPO / CASE 函数结果?
不在同一级别查询,除非你重复计算。您需要使用内联视图或 CTE,例如:
SELECT
X.EQNO, X.ITEMNO, X.AVG_CYCLE, X.MFG_TYPE, X.ACTCAV, X.STDCAV,
X.ORIG_WO_QTY, X.TOTAL_FLOOR_DISPO, X.ORIG_WO_QTY - X.TOTAL_FLOOR_DISPO,
X.NEW_ACTCAV, (X.ORIG_WO_QTY - X.TOTAL_FLOOR_DISPO) / X.NEW_ACTCAV
FROM (
SELECT
A.EQNO, A.ITEMNO, A.AVG_CYCLE, A.MFG_TYPE, A.ACTCAV, A.STDCAV,
A.ORIG_WO_QTY, A.TOTAL_FLOOR_DISPO,
CASE A.ACTCAV
WHEN 2 THEN
(3600 / A.AVG_CYCLE)*2
WHEN 1 THEN
(3600 / A.AVG_CYCLE)
ELSE 'UNKNOWN'
END AS NEW_ACTCAV
FROM V_RT_CYCLE_PART_COUNTS A
LEFT OUTER JOIN MFGCELL B ON A.MFGCELL = B.MFGCELL
LEFT OUTER JOIN EPLANT C ON B.EPLANT_ID = C.ID
WHERE A.MFG_TYPE = 'AIP-BLWMLD'
) X
内部查询需要获取您希望在外部查询中可用的所有列,以及您不想重复的任何计算。然后,外部查询可以引用其中的任何一个,包括您分配给任何计算值的别名。
推荐阅读
- r - group two variables(in rows) in R to create one variable
- php - 计算总金额乘以 100 的折扣
- php - 当我添加斜线/在路由之后样式消失
- swift - 自己的“圆点”游戏 - 奇怪的行为
- javascript - 为什么 Object.keys 在 String、Boolean、Number 和 Object 的原型上不能按预期工作?
- c# - CSOM 不使用 Windows 凭据并给出“远程服务器返回错误:(403) Forbidden。” 错误
- php - 自定义控制器验证不起作用 Api 平台
- autocomplete - Microsoft Edge 地址栏不再自动填充
- rust - 如何为 dyn Trait 对象的 Vec 获取 fmt::Debug 的实现?
- r - 如何使用 plot.zoo 在每个多重图中自定义 y 轴的颜色和比例?