我有一个场景,我必须编写一个sql查询,其中我只考虑所选日期的负值。如何实现输出我想要的是将特定日期的所有非负数转换为零。在2021年。
yqlxgs2m1#
你好像在找一个有条件的 sum . 逻辑是 case 聚合函数中的表达式,如下所示:
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 将日期转换为正数的表达式 2021 至 0 :
2020
2021
0
select fab, date, case when output > 0 and date = 2021 then 0 else output end output from mytbale
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
输出如下。
2条答案
按热度按时间yqlxgs2m1#
你好像在找一个有条件的
sum
. 逻辑是case
聚合函数中的表达式,如下所示:列中包含所有数字名称是很不常见的,例如
2020
,所以我想知道您显示的是实际的示例数据还是中间查询的结果(在这种情况下,可能会进行进一步的优化)。编辑
以上回答了问题的原版。这回答了编辑后的问题:
你可以使用
case
将日期转换为正数的表达式2021
至0
:xxe27gdn2#
如果你有下面这样的table
我想你在找这样的东西
输出如下。