我正在为 IBM U2 Rocket 数据库开发一段 SQL。这不是我熟悉的 db 平台。
我不能直接访问这个数据库:我只能通过在调用代码中编写语句并从那里测试它来访问它。这使得在出现语法错误时找出问题所在有点尴尬。
我正在尝试编写一个在派生列上有条件的查询。据我所读到的有关数据库的信息,这应该可以工作:
SELECT a.*
FROM (
SELECT dp.NAME
,dp.Code
,dp.BusinessType + ts.BusinessType AS bType
FROM dataPoints dp
LEFT OUTER JOIN trialSuppliers ts
WHERE ts.AccountStatus = 'A'
) a
WHERE a.bType LIKE '%cho%'
但是,它会引发此错误:
在 UCI::SQLExecDirect() 中死亡,SQLSTATE 37000,本机错误:0 [IBM][SQL Client][UNIDATA]
如果您只运行内部查询,它工作正常。尝试使用任何类型的内部选择语句会导致它抛出相同的错误,即:
SELECT *
FROM (
SELECT dp.NAME
,dp.Code
,dp.BusinessType + ts.BusinessType AS bType
FROM dataPoints dp
LEFT OUTER JOIN trialSuppliers ts
WHERE ts.AccountStatus = 'A'
)
仍然失败。
能够按派生列过滤我的查询的正确语法是什么?