HANA - 使用来自其他行的数据进行计算

HANA - Calculate using data from other line

我有一个要求,使用属性视图根据条件和值来自另一行来计算结果。

如果 KSCHL = Y,则结果将从 KBETR 设置。如果不是,结果将由它自己的 KBETR * KBETR 从相应的密钥对 (MATNR, WERKS) 设置。请看例子。

马特纳 |工作 |中学 |凯贝特 |预期结果

01 |一个 | × | 10 | 200 x 10

01 |一个 |是 | 200 | 200

01 |一个 | Z | 15 | 200 x 15

我正在考虑添加一个隐藏列来在其他行上存储值 200,然后用它来做倍数,或者创建一个带有参数的计算视图来保存该值。但是我仍然没有得到要求的正确答案。

感谢您的帮助,非常感谢

此语句的最简单 SQL Select 如下,包括不使用 sql windows 函数的自连接

select 
    Table1.*,
    case 
        when Table1.KSCHL = 'Y' 
        then Table1.KBETR 
        else
            Table1.KBETR * t2.KBETR
    end as Expected
from Table1
left join Table1 as t2
    on Table1.matnr = t2.matnr and
       Table1.werk  = t2.werk and
       t2.kschl = 'Y';

您的问题可能存在的问题是;如果有两个 Y 条件类型会发生什么。我假设您确保一次只有一个值。

另一种选择是使用 SQL First_Value() analytic function

您可以参考给定的示例,虽然示例在 SQL 服务器上,但函数在 HANA 数据库上的用法和语法与 SQL脚本开发人员

相同

这是您的 HANA 数据库SQL查询示例

select  
    *,
    case 
        when KSCHL = 'Y' 
        then KBETR 
        else
            KBETR * ( first_value(KBETR) over (partition by matnr, werk order by case when kschl = 'Y' then 0 else 1 end) )
    end as Expected
from Table1

first_value() 函数为每个用 Partition By 子句定义的 MATNR、WERK 组合获取按 CASE 语句排序的 KBETR 值(以获得 First_Value 函数开头的 Y 条件)

希望对你有帮助,