【问题标题】:Formatting a '$' dollar sign to an SQL Selection Statement with SUM() in it?将“$”美元符号格式化为带有 SUM() 的 SQL Select 语句?
【发布时间】:2017-03-05 07:30:07
【问题描述】:

我正在尝试将“$”美元符号格式化为“c”列,该列是其他两列的所有行相乘的总和。我先把它变成一个字符如下:

   SELECT TO_CHAR(SUM(a * b)) AS "c"
   FROM table1;

效果很好,但是当我通过添加“L9,999.99”格式化程序对其进行格式化时,会出现错误:

   SELECT TO_CHAR(SUM(a * b, 'L9,999.99') AS "c"
   FROM table1;

所以我尝试做一个 CAST:

   SELECT TO_CHAR(CAST(SUM(a * b) AS NUMERIC(10,2)) AS "c"
   FROM table1;

但没有任何效果。

如何使用 TO_CHAR 和/或 CAST 向具有 SUM() 函数的列添加“$”美元符号?

作为参考,我的预期输出是转:

    C
    10
    10.05
    11.50

进入

    C
    $10
    $10.05
    $11.50

【问题讨论】:

  • 你不会告诉我们引发了哪个错误吗?如果您格式化文字数字,这种格式是否有效?总和可以在没有格式化的情况下工作吗?涉及的列的类型是什么?
  • 使用相同数量的左括号和右括号是否有效?
  • 我所有的数据类型都是数字(10, 2)。引发的错误是:“ORA-01722:无效号码”
  • 我不相信这是你得到的错误号
  • 使用额外的右括号,这可以作为独立查询正常工作;那么你在哪里以及如何运行它,它实际上是否是更大查询的一部分(显式或隐式)试图再次将你生成的字符串视为数字?尝试创建an MCVE,它会创建并填充一个表并在查询时生成此错误 - 我们可以以相同的方式运行。

标签: sql oracle formatting currency to-char


【解决方案1】:

扩展JJJ的评论:缺少一个括号,以下应该工作:

SELECT TO_CHAR(SUM(a * b), 'L9,999.99') AS "c"
FROM table1;

声明

SELECT TO_CHAR(SUM(a * b, 'L9,999.99') AS "c"
FROM table1;

会引发编译时错误:

 ORA-00909: invalid number of arguments

【讨论】:

  • 哦,对不起,这只是我在输入这个问题时的一个错字。我原来的 SQL 语句确实有那个括号,但它仍然不起作用,这就是我在这里问的原因。
  • @5120bee:那你想怎么继续?您是否认为有人阅读了您的问题,然后阅读了此评论,使用它来重建您声称已执行的语句,然后找到带有错误消息的其他评论,意识到(请参阅 Alex Poole 对您的帖子的评论)这是'还没有你执行的语句,猜测你执行的真实语句,然后发布一个有用的解决方案?
猜你喜欢
  • 1970-01-01
  • 2020-06-20
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多