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



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

如果 KSCHL = Y,则结果将从 KBETR 设置。如果没有,结果将由它自己的KBETR * KBETR从相应的密钥对(MATNR,WERKS(设置。请参阅示例。

1020015
MATNR WERK KSCHL KBETR 预期结果
01 A X200 x 10
01 A Y200
01 A Z200 x 15

另一种选择是使用 SQL First_Value(( 分析函数。

您可以参考给定的示例,尽管该示例在 SQL Server 上,但该函数在 SQLScript 开发人员的 HANA 数据库上具有相同的用法和语法

下面是 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(( 函数获取按 CASE 语句排序的 KBETR 值(以获取First_Value函数开头的 Y 条件(,用于每个 MATNR,WERK 组合由 Partition By 子句定义

我希望它有所帮助,

此语句的最简单的 SQL 选择将如下所示,包括不使用 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条件类型会发生什么。我假设您确保一次只有一个值。

相关内容

  • 没有找到相关文章

最新更新