週六,早十點起牀,畢竟勞動了一週了,偶爾偷個小懶!
步入正題!
----注---/*這只是我隨便寫的表名,大概意思往下看*/--------
select
case when b.val is null then a.val
when b.val <= 0 then a.val
else a.val / a.qty
end as RTL_VAL
from 表1 a
left join 表2 b
on a.id = b.id
我的需求就是,當b.val 爲 null 或者 <= 0時,我要用 a.val ,否則就是進行一個除法運算
這裏我用CK(clickhouse)進行計算的時候,他會提示除數不能爲0
那就分開計算 進行union all
select
divide(a.val,b.CONVERTER) as RTL_VAL
from a
left join b on a.id = b.id
where b.val >0 and b.val is not null
union all
select
a.val as RTL_VAL
from a
left join b on a.id = b.id
where b.val <=0 and b.val is not null
---注:divide 是計算數字的商。結果類型始終是浮點類型。 它不是整數除法。對於整數除法,請使用'intDiv'函數。 當除以零時,你得到'inf','- inf'或'null'---
進行運算的時候,你會發現還是錯!
這下邊是其他數據庫 進行union all 看好我框出來的字段!(這些其實是我截取的,哈哈,不過不影響操作!)
現在呢,肯定納悶啊,挖草兩個SQL都能運行計算,爲啥 union all 會報錯?
記住!劃重點! 考試會考的!
CK目前來說,應該是不支持 union all 下邊的 as 別名!
把別名去掉之後,可以計算! 還有一點就是
你的字段一定要跟 上方的對應!
一定要對應!
一定要對應好!
不然也會報錯!具體報的錯 給忘了。
從十點到下午六點多點,遇到了這麼一個神坑! 真是太陽了。
希望對您有幫助。拜拜~ 喫飯去了。