检查并返回 SQL 上的标志,如果所有条目均为 0,则返回 1?


1000
flag 水果需要输出
苹果0
苹果0
苹果0
1个苹果0
0橙色1
0橙色1
0橙色1

使用窗口 SUM:

SELECT flag1, fruit, 
CASE WHEN SUM(flag1) OVER(PARTITION BY fruit) = 0 THEN 1 ELSE 0 END
FROM tab;

数据库<>小提琴演示

您可以尝试以下操作

--this calculates the required flag for each fruit
with flags (fruit, flagsum) as (
select fruit, 1 - sign(sum(flag)) as flagsum
from fruits
group by fruit
)
--join with the original table
select fr.*, fl.flagsum
from fruits fr inner join flags fl on fr.fruit = fl.fruit 

如果该组中至少有一个值为 1 的标志,sign(sum(flag))返回1,否则0返回。因此,1 - sign(sum(flag))反转了该值。

相关内容

  • 没有找到相关文章

最新更新