如何解决SQL-CASE语句:“数据类型不一致:预期DATE得到了CHAR”
我编写了一个CASE语句(作为较长查询的一部分),该语句在表中查找发票,如果找到发票,则返回上一个发票日期,否则返回字符串“ No Invoices”。
我知道数据类型应该是一致的,这就是为什么我将日期转换为字符串的原因,但是这种方式无法将日期导出为字符串,因此无法在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"
解决方法
我只用NULL
来表示缺少发票日期。但是,如果需要使用字符串,一种选择是使用可排序格式的日期:
to_char(max(i.INVOICE_DATE),'YYYY-MM-DD')
,
您可以使用coalesce
代替您的case
:
coalesce(to_char(max(i.INVOICE_DATE),'YYYY-MM-DD'),'No invoices') as "AP Last Invoice Date"
当第一个参数返回null时,它将使用下一个参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。