select a.sumn, convert(numeric(50),cast(abs(a.sumn-b.bsum)/b.bsum as decimal(5,2))*100,120) as tb怎么写可以保证被除数bsum为0时tb为0,除数为0时等于-1
时间: 2023-04-06 08:02:01 浏览: 59
可以使用CASE语句来判断除数是否为0,如果是则返回0,否则按照原公式计算。具体代码如下:
SELECT a.sumn,
CASE WHEN b.bsum = 0 THEN 0
WHEN a.sumn = 0 THEN -1
ELSE CONVERT(NUMERIC(50), CAST(ABS(a.sumn - b.bsum) / b.bsum AS DECIMAL(5, 2)) * 100, 120)
END AS tb
FROM table_a AS a
INNER JOIN table_b AS b ON a.id = b.id
相关问题
select a.sumn, convert(numeric(50),cast(abs(a.sumn-b.bsum)/b.bsum as decimal(5,2))*100,120) as tb怎么写可以保证被除数bsum为0是不计算
可以使用CASE语句来判断bsum是否为0,如果为0则返回NULL,否则按照原式计算。具体代码如下:
SELECT a.sumn,
CASE
WHEN b.bsum = 0 THEN NULL
ELSE CONVERT(NUMERIC(50), CAST(ABS(a.sumn - b.bsum) / b.bsum AS DECIMAL(5, 2)) * 100, 120)
END AS tb
FROM table_a a
INNER JOIN table_b b
ON a.id = b.id
bcell.getNumericCellValue() Cannot get a NUMERIC value from a STRING cell 如何解决
这个错误是因为你正在尝试从一个字符串类型的单元格获取数字值。要解决这个问题,你需要根据单元格的类型来选择正确的方法。
首先,你可以使用getCellType()方法来确定单元格的类型。如果单元格的类型是字符串类型(CellType.STRING),你可以使用getStringCellValue()方法来获取其值。如果单元格的类型是数字类型(CellType.NUMERIC),你可以使用getNumericCellValue()方法来获取其值。
下面是一个示例代码,展示了如何根据单元格的类型来获取值:
```java
Cell cell = row.getCell(columnIndex);
if (cell.getCellType() == CellType.STRING) {
String value = cell.getStringCellValue();
// 处理字符串类型的值
} else if (cell.getCellType() == CellType.NUMERIC) {
double value = cell.getNumericCellValue();
// 处理数字类型的值
}
```