在Oracle SQL Case语句中以关键字结尾

时间:2014-01-20 20:11:43

标签: sql oracle oracle-ucm idoc

我在下面的查询中使用两个案例来获得daction&的结果。 ApprovalType。 在Oracle SQL中运行以下查询时,会创建两个新的临时列,如daction_1& ApprovalType _1 for daction&分别为ApprovalType列。现在,我想在我的IDOC代码中使用这些关键字,但由于临时列已创建,我无法使用它们。怎么解决这个?

SELECT WH.dActionDate,
  WH.xWF_SendTo,
  WH.dAction,
  ATY.ApprovalType,
  WH.xWorkflowComments,
  CASE
    WHEN NVL(ApprovalType,'') IS NULL
    THEN xPurposeForRejection
    ELSE ApprovalType
  END AS ApprovalType,
  CASE
    WHEN NVL(dAction,'')      ='SendTo'
    AND NVL(ApprovalType,'') IS NOT NULL
    OR NVL(dAction,'')        ='Approve'
    THEN 'Approve'
    ELSE 'Reject'
  END AS dAction
FROM WorkflowHistory WH,
  Reason Re,
  ApprovalType ATY
WHERE UPPER(dDocName)     = UPPER('D_1239178')
AND xPurposeForSubmission = Re.ReasonID(+)
AND xDocApproval          = ATY.ApprovalTypeID(+)
AND (dAction             IN('Reject','Approve')
OR (dAction               ='SendTo'
AND ApprovalType         IS NOT NULL))
AND ROWNUM               <= 5
ORDER BY dActionDate DESC,
  dActionMillis

1 个答案:

答案 0 :(得分:0)

查看列名称我假设Idoc是Oracle Webcenter Content Server(以前称为Oracle UCM)中使用的脚本语言。我没有正在运行的实例来检查,但我很确定您可以使用所需的列创建数据库视图,然后在Configuration Manager中将其视为常规表。 Following link提供了配置过程的一些细节。另一个选择是将您的逻辑移动到Idoc代码本身,尽管它可能性能较差。