【问题标题】:Cognos CAST within a CASECASE 中的 Cognos CAST
【发布时间】:2018-12-12 00:15:14
【问题描述】:

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

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

【问题讨论】:

  • 嗯,解析错误说是什么问题?
  • 如果没有错误信息,这很难分析。 [Order Suffix] 是什么数据类型?
  • int32(整数)
  • 您的原始帖子提到“解析错误”。我仍然没有看到错误消息。

标签: sql case cognos-10


【解决方案1】:

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

也许这会做你想要的:

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

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

【讨论】:

  • 谢谢戈登。应用该代码时出现此错误:QE-DEF-0459 CCLException QE-DEF-0260 在位置之前或附近解析错误:20 of: "(CAST(([Order #] as varchar(7)) + (CASE WHEN [订单后缀]
  • 将“as”改为逗号。它是 Cognos,而不是 SQL。
  • 感谢您的回复。我已将 as 更改为逗号,但仍然得到以下信息: QE-DEF-0459 CCLException QE-DEF-0260 在位置之前或附近解析错误:18 of: "(CAST(([Order #]," QE-DEF -0261 QFWP - 解析文本:(CAST(([Order #], varchar(7)) + (CASE WHEN [Order Suffix]
  • 好的。得到它的工作。以单边嵌套括号结束。两边的数字相同,逗号到位,代码完美!谢谢你们忍受我! CAST([Order #], varchar(7)) + (CASE WHEN [Order Suffix]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 2020-02-17
相关资源
最近更新 更多