2012-03-15 84 views
1

我想在Pervasive中使用case語句,因爲它也缺少對Coalesce的支持。但似乎Pervasive 8也缺乏對Case語句的支持。Pervasive 8中的案例聲明

所以我想檢查是否有一個替代解決方案,我的問題。

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 

所以我的問題主要集中在第四排在我的SELECT語句,說

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

,我想這導致1個輸出。在普適8中有沒有辦法解決這個問題,以便我可以從我的查詢中得到類似案例的行爲?

作爲旁註,我使用JDBC驅動程序並從Java程序進行查詢。

回答

1

您可以使用IF語句。語法是:

IF(搜索條件,表達,表達)

所以,你的情況,你可能會需要這樣的東西:

IF(Pheadpr.BLNO '',Pheadpr.BLNO,STOCKTR.PHEADPR)作爲BLNO

如果可能的話,你應該考慮升級到cur租賃版PSQL V11既支持CASE也支持COALESCE語句,同時支持PSQL的支持版本。