如何在 DB2 中划分两列 SQL

How to Divide two columns in DB2 SQL

我将磁盘容量存储在 CAPACITY_TOTAL 和 CAPACITY_USED 两列中。我需要显示我需要将 CAPACITY_USED 除以 CAPACITY_TOTAL 作为 CAPACITY_USED/CAPACITY_TOTAL * 100 的利用率百分比。 我正在使用以下查询:

select CAPACITY_USED / CAPACITY_TOTAL from TableName

给出以下错误:

DB2 SQL Error: SQLCODE=-801, SQLSTATE=22012, SQLERRMC=null, DRIVER=4.15.82

我已将我的列转换为十进制,但即使那样也不起作用。

错误代码 801 表示您的查询试图除以零。

select CAPACITY_USED / CAPACITY_TOTAL from TableName
where CAPACITY_TOTAL IS NOT NULL and CAPACITY_TOTAL <> 0

好的,所以 SQLSTATE=22012 意味着您正在尝试 除以零 。显然,您的某些行在 CAPACITY_TOTAL 列中包含空值或零,而 db 无法计算公式。

尝试此查询以获得更好的结果:

SELECT CASE CAPACITY_TOTAL 
            WHEN 0    THEN 0
            WHEN NULL THEN 0
            ELSE CAPACITY_USED / CAPACITY_TOTAL
       END AS UTILIZATION
  FROM MY_TABLE

您可能想为零/空输入一些其他有意义的 return 值。

或者,跳过行,其中 CAPACITY_TOTAL 为空或零:

SELECT CAPACITY_USED / CAPACITY_TOTAL AS UTILIZATION
  FROM MY_TABLE
 WHERE CAPACITY_TOTAL IS NOT NULL
   AND CAPACITY_TOTAL > 0