运行带有大量when
的sql代码:
case
when callDuration > 0 and callDuration < 30 then 1.4
when callDuration >= 30 and callDuration < 60 then 2.3
when callDuration >= 60 and callDuration < 120 then 3.7
when callDuration >= 120 and callDuration < 180 then 4.5
when callDuration >= 180 and callDuration < 240 then 5.2
when callDuration >= 240 and callDuration < 300 then 6.1
when callDuration >= 300 and callDuration < 360 then 7.3
when callDuration >= 360 and callDuration < 420 then 8.4
when callDuration >= 420 and callDuration < 480 then 9.2
when callDuration >= 480 and callDuration < 540 then 10.1
when callDuration >= 540 and callDuration < 600 then 11.9
when callDuration >= 600 then 12.3
end as duration
如果有100行这样的when and then,如何简化它更优雅,我可以考虑使用金佳模板或查找表。有没有更好的方法,不受具体变体的限制?
3条答案
按热度按时间cbwuti441#
# # 接近
我 认为 最 优雅 的 解决 方案 是 查找 表 ( 您 在 上面 提到 过 ) 。
下面 是 一 个 示例 , 但 为了 简单 起见 , 我 没有 输入 示例 中 列出 的 所有 范围 。
# # 创建 数据
中 的 每 一 个
# # SQL 语句
格式
# # Sql 陈述 式 ( 内部 链接 )
格式
SQL 小 提琴 : http://www.sql 小 提琴 网站
hi3rlvi22#
现在,在继续下一步之前,您应该仔细搜索应用程序代码,寻找***所有(!)这样的“旧方法的混乱示例”,以确保它们 * 完全 * 匹配您的查找表替换策略。这是一个所谓的***高度普遍的更改,应该非常小心地处理。
agxfikkp3#
针对BigQuery考虑以下事项
如果应用于示例数据(your_table),如下所示
输出为