尝试将结果传递给另一个计算时,列名无效

时间:2016-11-18 14:46:34

标签: sql-server

我正在尝试将我的结果从profilhøjde传递给计算进行,然后显示id([Dækstørelsen])并过滤它但我得到了

  

[Dækstørelsen]和“10 Tommer的诉讼”无效的列名

我该怎么做?

/******calculation for profilhøjde******/
       select 
      ("profilhøjde" *2 + @diameter10)*PI() as "diameter 10 tommer" 
      from
        (select ([brede]*[Profil])/100 as "profilhøjde"
        from [Tabel].[dæk]
        )a
    /******calculation for procent******/
           select 
           [Dækstørelsen],CAST(CEILING(
    (@omkredsnu-"diameter 10 tommer")/@omkredsnu*100*100)/100 
    as decimal(18,2)) as "procent for 10 Tommer"

      from
       (select ("profilhøjde" *2 + @diameter10)*PI() as "diameter 10 tommer" 
        from [Tabel].[dæk]
        )b
         where "procent for 10 Tommer"  BETWEEN @negativværdi AND @maxafvigelsværdi
    SET @negativværdi = Concat('-', @maxafvigelsværdi);

我之前使用过这个

 select * from
(select [Dækstørelsen],CAST(CEILING(
(@omkredsnu-[Omkreds for 10 Tommer])/@omkredsnu*100*100)/100 
as decimal(18,2)) as "procent for 10 Tommer"
from [Tabel].[dæk]
)a
where "procent for 10 Tommer"  BETWEEN @negativværdi AND @maxafvigelsværdi

2 个答案:

答案 0 :(得分:1)

错误消息的原因是

  • [Dækstørelsen]不是子选择中的列,而是表[Tabel].[dæk]

  • "procent for 10 Tommer"是select中的别名,因此不允许在where子句中使用

要修复第一个错误,您必须在子选择中包含该列,例如

select [Dækstørelsen],
       ("profilhøjde" * 2 + @diameter10) * PI() as "diameter 10 tommer" 
from (select [Dækstørelsen], ([brede] * [Profil]) / 100 as "profilhøjde"
      from [Tabel].[dæk]) a

答案 1 :(得分:0)

如果删除别名

,这应该有效
 select 
      ("profilhøjde" *2 + @diameter10)*PI() as "diameter 10 tommer" 
      from
        (select ([brede]*[Profil])/100 as "profilhøjde"
        from [Tabel].[dæk]
        )a
    /******calculation for procent******/
           select 
           [Dækstørelsen],CAST(CEILING(
    (@omkredsnu-"diameter 10 tommer")/@omkredsnu*100*100)/100 
    as decimal(18,2)) as "procent for 10 Tommer"

      from
       (select ("profilhøjde" *2 + @diameter10)*PI() as "diameter 10 tommer" 
        from [Tabel].[dæk]
        )b
         where CAST(CEILING(
    (@omkredsnu-"diameter 10 tommer")/@omkredsnu*100*100)/100 
    as decimal(18,2))  BETWEEN @negativværdi AND @maxafvigelsværdi
    SET @negativværdi = Concat('-', @maxafvigelsværdi);