sql - 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"
解决方案
我只是NULL
用来表示缺少发票日期。但如果您需要使用字符串,一种选择是使用可排序格式的日期:
to_char(max(i.INVOICE_DATE), 'YYYY-MM-DD')
推荐阅读
- c++ - 如何检查模板参数是否为 std::variant?
- c++ - OpenGL:使用指向静态数据的指针数组传递缓冲区数据
- html - 如何使用背景图像正确定位?
- python - 如何避免在此程序中对我的条件值进行硬编码以打印出圣诞树?
- php - WooCommerce 自定义报告:获取已完成状态的订单
- elasticsearch - 用于制作弹性搜索请求的 Apache HttpClient 的结果不正确
- gcc - 了解使用内存源操作数和 x87 fcomi / fcmov 的 GCC 内联汇编代码
- python - 如何在本地使用 gcloud Python API
- php - 我有一个关于将数据从用户传输到另一个用户的问题
- ios - tns run ios --bundle Fails clang-4.0: error: cannot specify -o when generated multiple output files