sql 如何在具有别名的结果的 2 个值之间进行过滤

sql how to filter between 2 values of a result with an alias

所以我试图在 -5 和 5 之间过滤 但我得到了

invalid column name procent for 10 Tommer

正确的做法是什么

    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]
   WHERE "procent for 10 Tommer" BETWEEN -5 AND 5,

select [Dækstørelsen],CAST(CEILING(
(@omkredsnu-[Omkreds for 11 Tommer])/@omkredsnu*100*100)/100 
as decimal(18,2)) as "procent for 11 Tommer"
from [Tabel].[dæk]
WHERE "procent for 11 Tommer" BETWEEN -5 AND 5

您可以在 WHERE 子句中使用与创建的同一级别的列。

用另一个查询包装它:

SELECT * 
FROM (YourQuery Here) t
WHERE t."procent for 10 Tommer" BETWEEN -5 AND 5

或者在WHERE子句中使用相同的逻辑

WHERE CAST(CEILING((@omkredsnu-[Omkreds for 10 Tommer])/@omkredsnu*100*100)/100 as decimal(18,2))
      BETWEEN -5 AND 5

您不能在 where 子句中使用别名。所以像下面这样使用

 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]
WHERE CAST(CEILING(
(@OMKREDSNU-[OMKREDS FOR 10 TOMMER])/@OMKREDSNU*100*100)/100 
AS DECIMAL(18,2)) 
 BETWEEN -5 AND 5

或者

 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 -5 AND 5