CASE 中的 Cognos CAST

Cognos CAST within a CASE

我以为我会做一些简单的事情,但它给了我错误。我正在尝试将我们的 order# 与我可以毫无问题地使用 CAST 语句的订单后缀结合起来。我需要结果为 order#-## (123456-01)。当有超过九个版本并且我得到 123456-010 时会出现问题,因为我在我的组合中添加了一个“-0”。我已经试过了,但它给了我解析错误:

CASE WHEN [Order Suffix] > 9
THEN CAST (([Order #],varchar(7)) + '-' + CAST ([Order Suffix],varchar(2)) 
ELSE CAST (([Order #],varchar(7)) + '-0' + CAST ([Order Suffix],varchar(2))
END

我做错了什么,有没有更好的方法来完成这个?提前致谢。

CAST() 使用语法 as <type> 基本上是所有数据库(这是一个标准函数。

也许这会如你所愿:

 (CAST(([Order #] as varchar(7)) +
  (CASE WHEN [Order Suffix] <= 9 THEN '-0' ELSE '-' END) +
  CAST([Order Suffix] as varchar(2))
 )

请注意,这会分解出两个表达式中的公共代码。我认为这有助于提高可维护性。