条件时使用Case不能正常运行Oracle View

问题描述

对于M_DESCR字段,我尝试在'C'时将值设置为altype = 'Cash total',在altype = 'Other total'时我希望将值设置为'O',否则应为null。当我尝试在第一个union all条件中执行相同的操作时,则字段M_DESCR的任何操作都没有更改。

我还想在完成所有计算但不知道该怎么做的时候从视图的最后删除字段ALTYPE

解决方法

据我了解,您可能正在寻找类似的东西((只有我对您提供的数据集有些怀疑,但可能是我错了)

CREATE OR REPLACE VIEW
    IS_ID
    (
        IDENTIFIER,IMPORT_DATE,EFFECTIVE_DATE,FUND_QUOTE,FUND_QUOTE_CRNY,FUND_QUOTE_DATE,MEMBER_IDENTIFIER,MEMBER_QUOTE_CRNY,MEMBER_QTY,MEMBER_QTY_TYPE,FORCE_FLAG,MEMBER_DESCR,MEMBER_RATIO,MEMBER_MARKETVALUE
    ) AS
SELECT
  IDENTIFIER,CASE 
       WHEN allocationassettype = 'Cash total'
       THEN
       'C'
       WHEN allocationassettype = 'Other total'
       THEN
       'O'
       ELSE NULL
  END AS MEMBER_DESCR,MEMBER_MARKETVALUE        
FROM
(
SELECT
    IDENTIFIER,MEMBER_MARKETVALUE,ALLOCATIONASSETTYPE
FROM
    IS_TEST
WHERE
    ALLOCATIONASSETTYPE != 'Cash'
and MEMBER_IDENTIFIER is not null
UNION ALL
SELECT
    IDENTIFIER,NULL,SUM(
        CASE
            WHEN allocationassettype = 'Cash'
            THEN member_ratio
            ELSE 0
        END),SUM(
        CASE
            WHEN allocationassettype = 'Cash'
            THEN member_marketvalue
            ELSE 0
        END),'Cash total'    
FROM
    IS_TEST
GROUP BY
    IDENTIFIER,MEMBER_DESCR
UNION ALL
SELECT
    IDENTIFIER,100 - SUM(
        CASE
            WHEN MEMBER_IDENTIFIER IS NOT NULL
            THEN member_ratio
            ELSE 0
        END) - SUM(
        CASE
            WHEN allocationassettype = 'Cash'
            THEN member_ratio
            ELSE 0
        END),SUM(member_marketvalue) - SUM(
        CASE
            WHEN allocationassettype = 'Cash'
            THEN member_marketvalue
            ELSE 0
        END) - SUM(
        CASE
            WHEN MEMBER_IDENTIFIER IS NOT NULL
            THEN member_marketvalue
            ELSE 0
        END),'Other total'    
FROM
    IS_TEST
GROUP BY
    IDENTIFIER
);
,

我看不到所创建视图的任何问题。您只需从选择列表和查看列列表中删除ALLOCATIONASSETTYPE列即可。

在测试案例中,我看不到您所描述的任何值:

**

allocationassettype ='现金总额',当distributionassettype ='其他 总计”

**

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...