Oracle SQL 到 Select 行(基于大小写)

Oracle SQL to Select rows based on case

我有一个 table 包含以下字段

ID          Category    AgingSet    Amount
K-218660115 02          STD         -159
K-218660115 03          STD           60
K-218660115 04          STD           90
K-218660115 05          STD            6
K-218660115 06          BDSTD        156

我的 sql select 应该 return 最后一行,即

K-218660115 06          BDSTD        156

如果 STD 老化集不为零。如果所有 STD 老化设置都设置为 0 ,我的 SQL select 将 return

K-218660115 02          BDSTD             0

感谢任何帮助。

逻辑似乎有点难以理解。您似乎想要基于 'STD' 值的总和是否为 0 的条件逻辑。

这应该 return 您想要的数据:

select id, category, 'BDSTD' as agingSet, amount
from (select t.*,
             row_number() over (partition by id order by category) as seqnum,
             sum(case when agingSet = 'Std' and amount <> 0 then 1 else 0 end) over (partition by id) as num_not_zero
      from t
     ) t
where (num_not_zero = 0 and seqnum = 1) or
      (num_not_zero > 0 and agingSet = 'BDSTD');