数据选择/行选择

zour9fqk  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(391)

我有一个场景,我必须编写一个sql查询,其中我只考虑所选日期的负值。
如何实现输出

我想要的是将特定日期的所有非负数转换为零。在2021年。

yqlxgs2m

yqlxgs2m1#

你好像在找一个有条件的 sum . 逻辑是 case 聚合函数中的表达式,如下所示:

select
    sum(case when "2020" < 0 then "2020" else 0 end)  result_2020,
    sum(case when "2021" < 0 then "2021" else 0 end)  result_2021
from mytable

列中包含所有数字名称是很不常见的,例如 2020 ,所以我想知道您显示的是实际的示例数据还是中间查询的结果(在这种情况下,可能会进行进一步的优化)。
编辑
以上回答了问题的原版。这回答了编辑后的问题:
你可以使用 case 将日期转换为正数的表达式 20210 :

select 
    fab, 
    date, 
    case when output > 0 and date = 2021
         then 0
         else output
    end output
from mytbale
xxe27gdn

xxe27gdn2#

如果你有下面这样的table

我想你在找这样的东西

SELECT id,
    year,
    (case when (a>0 and year = 2021) then 0 else a end) as a_filtered,
    (case when (b>0 and year = 2021) then 0 else b end) as b_filtered 
FROM `table_name` 
WHERE 1

输出如下。

相关问题