Фильтрация по производному столбцу в UniOLEDB
Я работаю над куском SQL для базы данных IBM U2 Rocket. Я не знаком с платформой 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][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'
)
Все еще не удается.
Какой правильный синтаксис позволяет фильтровать мой запрос по производному столбцу?
1 ответ
Просто сделав некоторую очистку, последний комментарий решил проблему?
Я не пользователь UniData, но у его наполовину двоюродного брата UniVerse "предложение" должно быть таблицей. Вы должны сделать подзапросы в предложении where. Я хотел бы сделать то, что вы хотите, добавив пару I-дескрипторов в словаре. Я часто обнаруживал, что ограниченное соответствие SQL для продуктов U2 является чем-то вроде препятствия, но когда ваши метаданные являются внешними по отношению к вашим данным и отделены от них, вы потеряете немного здравомыслия структурированных запросов. - Ван Амбург 21 сентября 17:31