【发布时间】:2020-12-07 19:49:48
【问题描述】:
对于M_DESCR 字段,当altype = 'Cash total' 时,我尝试将值设置为'C',当altype = 'Other total' 时,我希望将值设置为'O',否则它应该是null。当我尝试在我的第一个 union all 条件中执行相同操作时,字段 M_DESCR 没有任何更改。
当所有计算完成但不知道该怎么做时,我还想在最后从视图中删除字段 ALTYPE。
【问题讨论】:
-
您的观点存在根本性的错误。 1.表
is_test中没有allocationassettype = 'Cash total'或llocationassettype = 'Other total'的值。 2. 第二个和第三个联合只给出一行,所有字段都为空值。 3. 我假设您正在尝试访问第一个联合中的第二个和第三个联合的结果,这是不可能的。您能否澄清这些要点并添加预期的结果输出。 4.删除ALLOCATIONASSETTYPE应该不是问题。 -
实际上,正如您从第一个 UNION 看到的那样,我只是获取所有字段,在第二个联合和第三个联合中,我分别添加了额外的两行“现金总计”和“其他总计”,其中一些一种目前工作正常的计算......我只想在完成所有计算后删除 ALLOCATIONASSETTYPE,因为我正在使用这个字段......
-
如果你这么说第二个和第三个没问题,使用一级子查询应该是你应该做的,不应该尝试在第一个联合中访问它,这在逻辑上没有意义。
-
你能告诉我具体怎么做吗?
-
ALLOCATIONASSETTYPE 是来自基础表 IS_TEST 的列。因此,您可以简单地将其从视图 IS_ID 的投影中删除,而不会影响您在视图的内部逻辑中引用它的能力。但是,您使用 ALLOCATIONASSETTYPE 来识别
Cash total和Other total汇总行,因此看来您确实需要视图投影中的列。简而言之,根本不清楚您要达到的目标。
标签: sql oracle group-by view case-when