合并 SQL 以返回第二个参数带有括号的结果

问题描述 投票:0回答:1

我正在尝试创建一个新列,它可以显示历史表中的“创建日期”,该历史表与日期列“TIMESTAMP”中的当前表左连接我使用 Oracle Interactive Reporting (IR) SQL 查询工具从数据库 DB2 .历史表列是

DB2.TABLEH.TIMESTAMP  B
,当前表是
DB2.TIMESTAMP A

我创建了一个简单的合并查询,如下所示,运行良好

COALESCE(Min ( B.TIMESTAMP), A.TIMESTAMP)

但是我希望结果表明,如果第二个参数返回结果,则通过使用括号来满足哪个参数。我尝试使用连接函数,但出现如下错误。 这是完整的 SQL

SELECT A.ID,COALESCE(Min ( B.TIMESTAMP), '('CONCAT CAST(A.TIMESTAMP AS VARCHAR(10) ) CONCAT')') AS DATE_CREATED
FROM DB2.TABLE A
LEFT OUTER JOIN DB2.TABLEH B ON A.ID=B.ID AND A.COUNTRY= B.COUNTRY 
WHERE A.COUNTRY='XXXXXXX'
GROUP BY A.ID, A.TIMESTAMP

请注意,我不能将其放在带有 CASE WHEN 语句的另一列中,但仅当第二个参数在同一结果中满足时才需要用括号显示结果。

下面是我运行上面的 SQL 时得到的错误

“BIC00004.DAL010059。访问数据库时发生错误: 算术或比较运算的操作数不具有可比性。 SQLCODE=-401,SQLSTATE=42818,驱动程序=3.72.44 扩展错误描述为: 运算“{0}”的操作数的数据类型不兼容。”

我希望结果像这样显示。如果结果来自当前表的第二个参数。它应该放在括号中,如下所示。

身份证 创建日期
001 2004年8月1日
002 (05-02-2000)

输出结果

sql db2 parentheses coalesce
1个回答
0
投票

CONCAT
的参数类型需要相同(或者至少相似,以便可以隐含强制转换)。如果要将其放在括号中,则必须对两个参数使用字符串类型。例如。也是
CAST
VARCHAR
的第一个参数。

© www.soinside.com 2019 - 2024. All rights reserved.