首页 > 解决方案 > SQL - CASE 语句:“不一致的数据类型:预期 DATE 得到 CHAR”

问题描述

我编写了一个 CASE 语句(作为较长查询的一部分),它在表中查找发票,如果找到发票,则返回最后一个发票日期,否则返回字符串“无发票”。

我知道数据类型应该是一致的,这就是我将日期转换为字符串的原因,但是这样日期不能在 Excel 中排序,因为它是作为字符串导出的。

我怎样才能使它工作并保持正确的日期格式,而不必将其转换为字符串?

谢谢!

case when exists (select * from AP_INVOICES_ALL i where i.VENDOR_SITE_ID = s.VENDOR_SITE_ID)
     then (select to_char(max(i.INVOICE_DATE)) from AP_INVOICES_ALL i where i.VENDOR_SITE_ID=s.VENDOR_SITE_ID)  
     else 'No invoices'
end as "AP Last Invoice Date"

标签: sqloraclecase

解决方案


我只是NULL用来表示缺少发票日期。但如果您需要使用字符串,一种选择是使用可排序格式的日期:

to_char(max(i.INVOICE_DATE), 'YYYY-MM-DD') 

推荐阅读