多行强制转换+除法公式不起作用

时间:2019-01-28 14:57:15

标签: sql sql-server

enter image description here我尝试为每个转换行填充每个列的结果,但除第一行外,其他行均给我一个错误。如果我只是做第一个,它也可以按我的意愿工作。

为什么在所引用的视图中已经存在列名的情况下,为什么我在其他错误上出现了?

我只尝试了一条演员表,那很好。

Select 

cast ([sum nulls_shipment_id3] as float) / [count Total rows by carriername] *100 as [% NULL id3]
,cast ([sum nulls_shipment_id4] as float) / [count Total rows by carriername] *100 as [%null]
,cast ([EA/AH_REF] as float) / [count Total rows by carriername] *100

From dbo.BAS_CT_DATA_COMPLETENESS_vw1

不起作用(仅当我删除第二和第三强制转换公式时) 如果我使用所有三个强制转换运行它,则会发生以下错误:

错误:

  

第207层,状态1,第4行,第4行
  无效的列名“ sum nulls_shipment_id4”。

     

第207级状态1的状态5行
  无效的列名“ EA / AH_REF”。

2 个答案:

答案 0 :(得分:0)

cast ([sum nulls_shipment_id3] as float)

对于上面的行,sum函数未正确使用。请修正为:

cast (sum([nulls_shipment_id3]) as float)

另一个问题是:这里-> ,cast ([EA/AH_REF] as float),请使用常规方括号,而不要使用方括号,例如:,cast ((EA/AH_REF) as float)

答案 1 :(得分:0)

好吧,我解决了它,因为在col名称上包含“ /”,它也遇到了错误,因此将其重命名,现在可以正常工作了...

Select 
cast (nulls_shipment_id3 as float) / (Total_rows_by_carriername) *100 as [% NULL id3]
,cast (nulls_shipment_id4 as float) / (Total_rows_by_carriername) *100 as [%null]
,cast (nulls_EAAH_REF as float) / (Total_rows_by_carriername) *100 as [% NULLEAH]
From dbo.BAS_CT_DATA_COMPLETENESS_vw1