首页 > 解决方案 > CASE 中的 Cognos CAST

问题描述

我以为我会做一些简单的事情,但它给了我错误。我正在尝试将我们的订单# 与订单后缀结合起来,我可以毫无问题地使用 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

我做错了什么,有没有更好的方法来做到这一点?提前致谢。

标签: sqlcasecognos-10

解决方案


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

也许这会做你想要的:

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

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


推荐阅读