Фильтрация по производному столбцу в 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

Другие вопросы по тегам