【发布时间】:2019-06-04 05:40:00
【问题描述】:
我有一列可以获取具有如下条件的特定金额。
我试过这个来获取他的具体值,但我得到了多行,它应该是单行。
select distinct
(case
when aila.line_type_lookup_code = 'ITEM' and aila.tax_classification_code = 'VAT12 SERVICES' then to_char(aila.assessable_value) else '0'
end) as taxable_lines
from
ap_invoice_lines_all aila
where
aila.invoice_id = '31004'
然后我尝试用这个来替换空值。
select distinct
(case
when aila.line_type_lookup_code = 'ITEM' and aila.tax_classification_code = 'VAT12 SERVICES' then nvl(to_char(aila.assessable_value,0)) end) as taxable_lines
from
ap_invoice_lines_all aila
where
aila.invoice_id = '31004'
例如,我有一个名为 ap_invoice_lines_all 的表,它有一个列名
line_type_lookup_code string
tax_classification_code string
assessable_value double
那么根据我上面尝试的查询,我想要的预期输出是
taxable lines
1300
但我得到的是
taxable lines
0
1300
如何删除结果中的 0? 谢谢!
【问题讨论】:
-
问题不在于情况,而在于您的选择。如果表中有两条记录为
invoice_id = '31004',那么您将得到两行结果。 -
nvl总是需要 2 个参数NVL( string1, replace_with ) -
嗨@hotfix 当我尝试选择条件时,它只变成1行。但我需要将此作为条件的子查询。
-
我尝试了 NVL(assessable_value, 0) 但我得到错误无效参数数量
-
你得到多少行
select * from.. where aila.invoice_id = '31004'?你得到无效的数字异常,因为你的参数有不同的类型
标签: sql plsql oracle-sqldeveloper