click house Code: 47, e.displayText() = DB::Exception: Missing columns:

週六,早十點起牀,畢竟勞動了一週了,偶爾偷個小懶!

步入正題!

----注---/*這只是我隨便寫的表名,大概意思往下看*/--------
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 別名!

把別名去掉之後,可以計算! 還有一點就是

你的字段一定要跟  上方的對應!

 一定要對應!

一定要對應好! 

不然也會報錯!具體報的錯 給忘了。  

從十點到下午六點多點,遇到了這麼一個神坑!  真是太陽了。

希望對您有幫助。拜拜~  喫飯去了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章