繁体   English   中英

案例选择另一列AS400查询

[英]Case select another column AS400 query

我有一个不起作用的简单查询:

SELECT BATCH_0002.CREATOR, BATCH_0002.GLEXR,
case when BATCH_0002.GLIVD >'0' THEN BATCH_0002.GLIVD ELSE BATCH_0002.date end 
as tarih FROM BATCH_0002

错误是:

错误:[IBM] [系统i访问ODBC驱动程序] [用于i5 / OS的DB2] SQL0581-CASE表达式中的结果不兼容。 错误代码:-581

但是,当我将列名更改为与GLIVD不同的名称时,它可以工作。

SELECT BATCH_0002.CREATOR, BATCH_0002.GLEXR,
case when BATCH_0002.GLIVD >'0' THEN BATCH_0002.GLEXR ELSE BATCH_0002.date end 
as tarih FROM BATCH_0002

我的案件陈述书有问题吗?

在Case语句中,结果数据类型应相同。 在这里使用int和date作为结果,以防万一,这就是为什么错误显示不兼容的数据

您应该将一种数据类型转换为另一种数据类型

SELECT BATCH_0002.CREATOR, BATCH_0002.GLEXR, case when BATCH_0002.GLIVD >'0' THEN cast(BATCH_0002.GLIVD as char) ELSE cast(BATCH_0002.date as char) end as tarih FROM BATCH_0002

感谢您提供有关数据类型的所有答案。 处理了这些信息,现在解决了,效果很好:

    SELECT BATCH_0002.CREATOR, BATCH_0002.GLEXR, 
    case when BATCH_0002.GLIVD >'0' THEN 
    DATE(CHAR(1900000 + BATCH_0002.GLIVD)) 
    ELSE BATCH_0002.date end as tarih FROM BATCH_0002

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM