代码之家  ›  专栏  ›  技术社区  ›  omini data

sql:如何在具有别名的结果的两个值之间进行筛选

  •  1
  • omini data  · 技术社区  · 8 年前

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

    10 Tommer的列名procent无效

    正确的方法是什么

        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
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Tharunkumar Reddy    8 年前

    不能在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
    
        2
  •  0
  •   sagi    8 年前

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

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

    或者在中使用相同的逻辑 哪里 条款

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