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 条件)
希望对你有帮助,
我有一个要求,使用属性视图根据条件和值来自另一行来计算结果。
如果 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 条件)
希望对你有帮助,