你如何计算视图中的两个别名列

How do you calculate two alias columns in a View

SELECT     DATASET, BLOCKID, CATEGORY, TONNES * t100 AS True_Tonnes, VOLUME * t100 AS True_Volume, g100 AS Grade
FROM         dbo.tblPTEvaluationRep_100ppm

我想在我正在创建的同一视图 table 中计算 True_Tonnes * 等级并将其别名为 'Metal'。

是这样的吗?

SELECT DATASET,
       BLOCKID,
       CATEGORY,
       TONNES * t100 AS True_Tonnes,
       VOLUME * t100 AS True_Volume,
       g100 AS Grade,
       --
       tonnes * t100 * g100 as Metal   --> this
       -------------   ----    -----
       True_Tonnes     Grade   Alias   --> explanation
  FROM dbo.tblPTEvaluationRep_100ppm

您不能在 SELECT 中重复使用别名。您有四个选择:

  • 重复表达式。
  • 使用子查询。
  • 使用 CTE。
  • 使用横向连接。

在SQL服务器中,最后一个方法使用APPLY:

SELECT p.DATASET, p.BLOCKID, p.CATEGORY,
       v.True_Tonnes, v.True_Volume, v.Grade,
       (v.True_Tonnes * v.Grade) as Metal 
FROM dbo.tblPTEvaluationRep_100ppm p
     (VALUES (p.TONNES * t100, p.VOLUME * p.t100, g100)
     ) v(True_Tonnes, True_Volume, Grade);

您可以使用以下查询

SELECT 数据集, 块ID, 类别, 吨 * t100 AS True_Tonnes, 音量 * t100 AS True_Volume, g100 AS 等级,吨 * t100 * g100 作为金属 来自 dbo.tblPTEvaluationRep_100ppm