【发布时间】:2019-10-06 11:36:42
【问题描述】:
下面的 Oracle 查询给出了 error_message 和 Serial_num 是否存在任何不同的错误。
如果有零或无Different error 计数而不是显示空白/空结果。我怎样才能看到这样的输出?我尝试使用NVL(error_message,0) 和COALESCE (Sum(total),0),但没有得到想要的输出。
预期输出:
1 Different Errors: 0
Oracle SQL 查询:
SELECT
1 as Index_Num,
CONCAT('Different Errors: ', error_message || '# ' || serial_num),
SUM(total)
FROM (
SELECT error_message, serial_num, COUNT(*) total
FROM Table1
WHERE error_message NOT LIKE '%INVALID%'
GROUP BY error_message, serial_num
)
GROUP BY error_message, serial_num
【问题讨论】:
-
您是在检查
NULL值还是error_message实际上包含文本NULL?要检查NULL值,请使用IS NULL或IS NOT NULL。 -
更新了 WHERE 子句
-
你看到了什么输出?
-
您的内部查询将按序列号为您提供不同错误消息的计数。由于您的外部查询使用相同的列执行
GROUP BY,因此除了使用CONCAT创建新列之外,它实际上并没有做任何事情。 -
是的。通常,如果有适当的错误,则计数显示
1. Different Errors: Some error occurred for mismatch serials # 343543532 1