2 回答

TA贡献1883条经验 获得超3个赞
澄清这个答案。虽然 OP 问题可以通过多个WHENin来解决CASE,但我的理解是这是伪代码,OP需要子案例。在这种情况下,有一个错误 [我认为] 会截断字符串数据。下面的语法就是为了解决这个问题。我认为,这个问题的价值在于数据切割而不是你可以使用多个WHEN
SELECT
CASE
WHEN myCol = 0 THEN 'Pending'
WHEN myCol = 1 THEN 'Completed'
ELSE 'In-Process'
END Status
FROM
(SELECT
CASE
WHEN (table1_qty_comp = 0) THEN 0
ELSE
CASE WHEN (table1_qty_comp >= table2_qty_req) THEN 1
ELSE 2
END
END AS myCol
FROM
table1 LEFT JOIN table2 ON table1_part = table2_part) t1

TA贡献1816条经验 获得超6个赞
Progress 数据库将所有值存储为可变长度,并且不支持任何宽度属性。
Progress 4GL 非常乐意处理“过度填充”字段。这对于 Progress 应用程序来说是正常的,但它适合 SQL 客户端。
您正在运行 Progress 版本 9(它是古老的、过时的且不受支持的),因此您唯一的选择是在客户端上处理它(如帖子和 TS 的回答中所见)或运行提供的“dbtool”实用程序。dbtool 实用程序将扫描数据库并查找任何被过度填充的字段,然后调整“sql 宽度”,以便 SQL 客户端准确了解实际数据宽度。
- 2 回答
- 0 关注
- 161 浏览
添加回答
举报