页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

1 背景

客户想动态计算以显示正确的成本数据。

2 场景描述

2.1数据展示

ID关联方属性内部分包对应主合同确认成本确认收入
1内部无对外主项目50003000
2外部有对外主项目60004000
3内部有对外主项目70005000
4内部无对外主项目80006000
5外部无对外主项目90007000
6内部有对外主项目100008000
7内部无对外主项目110009000
8外部有对外主项目1200010000
9内部有对外主项目1300011000
10内部无对外主项目1400012000
11外部无对外主项目1500013000
12内部有对外主项目1600014000
13内部无对外主项目1700015000
14外部有对外主项目1800016000
15内部有对外主项目1900017000
6内部无对外主项目2000018000
17外部无对外主项目2100019000
18内部有对外主项目2200020000
19内部无对外主项目2300021000
20外部有对外主项目2400022000

2.2 业务说明

公司内部交易遵循一套严格的会计原则,要求根据不同的关联方属性和合同状态采用不同的计算方法来确认最终的成本。具体来说:

  • 对于“内部”且没有对外主项目的合同:这些交易通常不会直接影响公司的外部财务报表,因此直接使用确认成本作为最终的成本。
  • 对于所有其他情况:包括外部合同或内部但有对外主项目的合同,需要从确认成本中减去确认收入,以便准确反映这些项目的实际经济效果。


3 具体操作

信息
title前提条件

1、如果想复现示例,需要先把示例数据导入到模型中或者把文件导入到业务库中,详细查看:文件

2、示例下载数据:计算列通过CASE WHEN实现动态计算.xls

3、可以点击链接跳转到外部体验环境查看示例。


1、把数据导入到产品内置的northwind数据库中,详细查看:文件

2、创建数据模型如下图:

3、创建计算列,表达式如下:

  1. CASE WHEN 语法兼容性

    • 由于产品未对 CASE WHEN 进行封装,其语法完全依赖所连接数据库的原生实现。
    • 计算列支持直接调用数据库原生函数(如 CASE WHEN),但需严格遵循目标数据库的语法规范(例如:MySQL、SQL Server、Oracle 等的差异)。
  2. 字符串常量格式限制

    • 在计算列的语法定义中,仅支持单引号(')表示字符串常量
    • 双引号(")在此上下文中被解析为列名或标识符,因此无法用于标识字符串常量。

表达式内容:

代码块
languagecpp
CASE
WHEN ([关联方属性] = '内部' AND [内部分包对应主合同] = '无对外主项目')
OR [关联方属性] <> '内部'
THEN [确认成本]
ELSE [确认成本] - [确认收入]
END

4、创建之后保存数据模型,如果想要查明细,可以直接去创建即席查询进行分析;如果想要汇总统计,可以创建透视分析,根据关联方属性查看调整后的成本: