Изложение дела в Pervasive 8 - PullRequest
1 голос
/ 15 марта 2012

Я хочу использовать оператор case в Pervasive, поскольку в нем также отсутствует поддержка Coalesce. Но похоже, что в Pervasive 8 также отсутствует поддержка операторов Case.

Итак, я хотел проверить, есть ли альтернативное решение моей проблемы.

SELECT top 100 
STOCKTR.PHEADPR,
'' as tom
,case Pheadpr.BLNO when <> '' then Pheadpr.BLNO else STOCKTR.PHEADPR end as BLNO
,Pheadpr.custno
,Pheadpr.cust_name
,Pheadpr.company_name
,Pheadpr.company_city
,Pheadpr.invno
,Pheadpr.curr_code
,STOCKTR.RECID
,STOCKTR.ARTNO
,STOCKTR.DATE
,STOCKTR.QTY_PCS
,STOCKTR.PRICE_SEK_PCS
,STOCKTR.ULAND  
FROM STOCKTR INNER JOIN PHEADPR
ON PHEADPR.NO = STOCKTR.PHEADPR
WHERE STOCKTR.TRCODE='02' AND STOCKTR.PHEADPR <> '0'
order by STOCKTR.DATE desc

Таким образом, мой вопрос сосредоточен на четвертой строке в моем утверждении выбора, где написано

case Pheadpr.BLNO when <> '' then Pheadpr.BLNO else STOCKTR.PHEADPR end as BLNO

И я хочу, чтобы это привело к выводу 1 столбца. Есть ли способ обойти это в pervasive 8, чтобы я мог получить поведение, подобное регистру из моего запроса?

В качестве идентификатора я использую драйвер JDBC и выполняю запрос из программы Java.

1 Ответ

1 голос
/ 15 марта 2012

Вы можете использовать оператор IF.Синтаксис будет следующим:

IF (условие поиска, выражение, выражение)

Итак, в вашем случае вам, вероятно, понадобится что-то вроде:

IF (Pheadpr.BLNO <> '', Pheadpr.BLNO, STOCKTR.PHEADPR) как BLNO

Если это вообще возможно, вы должны рассмотреть возможность обновления до текущей версии PSQL V11 поддерживаеткак операторы CASE и COALESCE, так и поддерживаемая версия PSQL.

...