在我的单元查询中,我使用第一种方法获得了正确的输出,但是第二种语法失败了,不确定我到底遗漏了什么,但它肯定是一些次要的东西。
方法- 1
SELECT FLAG
CASE WHEN flag = 'A' THEN 'Active'
WHEN flag = 'B' THEN 'Inactive'
WHEN flag = 'C' THEN 'Inactive'
WHEN flag = 'D' THEN 'Inactive'
WHEN flag = 'E' THEN 'Inactive'
WHEN flag = 'F' THEN 'Inactive'
WHEN flag = 'G' THEN 'Inactive'
WHEN flag = 'H' THEN 'Inactive'
WHEN flag = 'I' THEN 'Inactive'
WHEN flag = 'J' THEN 'Inactive'
WHEN flag = 'K' THEN 'Inactive'
WHEN flag = 'L' THEN 'Inactive'
ELSE ''
END AS FINAL_FLAG,
NAME,
PHONE_NUMBER
FROM TEST_WORKER_TABLE;
+-------+--------------+------------+---------------+
| FLAG | FINAL_FLAG | NAME | PHONE_NUMBER |
+-------+--------------+------------+---------------+
| A | Active | MARK K | 123-456-7890 |
| B | Inactive | Raj V | 123-456-7890 |
| C | Inactive | Nick B | 123-456-7890 |
| L | Inactive | Elainee L | 123-456-7890 |
| K | Inactive | Kim K | 123-456-7890 |
+-------+--------------+------------+---------------+方法- 2
SELECT FLAG
CASE WHEN flag = 'A' THEN 'Active'
WHEN flag = 'B' OR 'C' OR 'D' OR 'E' OR 'F' OR 'G' OR 'H' OR 'I' OR 'J' OR 'K' OR 'L' THEN 'Inactive'
ELSE ''
END AS FINAL_FLAG,
NAME,
PHONE_NUMBER
FROM TEST_WORKER_TABLE;
Error: Error while compiling statement: FAILED: ClassCastException org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableConstantStringObjectInspector cannot be cast to org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector (state=42000,code=40000)有什么建议吗?
发布于 2019-11-26 21:09:39
使用IN子句而不是OR子句。
SELECT FLAG
CASE WHEN flag = 'A' THEN 'Active'
WHEN flag IN ('B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L') THEN 'Inactive'
ELSE ''
END AS FINAL_FLAG,
NAME,
PHONE_NUMBER
FROM TEST_WORKER_TABLE;https://stackoverflow.com/questions/59058758
复制相似问题