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

在使用ClickHouse处理数据时,遇到一个需求:当b.val为null或<=0时使用a.val,否则进行除法运算。在尝试使用UNION ALL结合条件解决时,出现错误。问题在于ClickHouse不支持UNION ALL下的别名,移除别名并确保所有字段对应后,问题得到解决。这个经验分享希望能帮助遇到类似问题的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

周六,早十点起床,毕竟劳动了一周了,偶尔偷个小懒!

步入正题!

----注---/*这只是我随便写的表名,大概意思往下看*/--------
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 是计算数字的商。结果类型始终是浮点类型。 它不是整数除法
Dim ws As Worksheet Dim lastRow As Long Set ws = ThisWorkbook.Worksheets("Sheet1") '清除格式和删除行列 ws.Cells.ClearFormats ws.Range("1:2").Delete Shift:=xlUp ws.Range("A:A,B:B,C:C,F:F,G:G,I:I,J:J,K:K,M:M,P:P,Q:Q,S:S,T:T").Delete Shift:=xlToLeft '添加新列 ws.Range("H1").Value = "回收时间" ws.Range("K1").Value = "回收人" ws.Range("L1").Value = "复核人" ws.Columns("E:E").Copy Destination:=ws.Columns("I:I") ws.Columns("F:F").Copy Destination:=ws.Columns("J:J") '筛选数据 ws.Range("A:D").AutoFilter ws.Range("A:D").AutoFilter Field:=1, Criteria1:="<>tt", VisibleDropDown:=False ws.Range("A:D").AutoFilter Field:=2, Criteria1:="<>996999", VisibleDropDown:=False ws.Range("A:D").AutoFilter Field:=3, Criteria1:="<>996999", VisibleDropDown:=False ws.Range("A:D").AutoFilter Field:=4, Criteria1:="<>*贴", Operator:=xlAnd, Criteria2:="<>*片", VisibleDropDown:=False '排序数据 With ws.Sort .SortFields.Clear .SortFields.Add2 Key:=ws.Range("A2:A500"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange ws.Range("A1:L500") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With With ActiveSheet .Columns.AutoFit .Rows.AutoFit .Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove .Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove .Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove End With '合并单元格 With ws.Range("A1:L1") .Merge .Value = "yyy" End With '调整列宽 ws.Columns("B:B").ColumnWidth = 7.5 ws.Columns("E:E,I:I").ColumnWidth = 3.08 End Sub 改进
05-22
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值