sql server—将计算应用于各个列的嵌套选择

neekobn8  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(242)

我当前的查询非常简单,如下所示: SELECT TOP 100 * FROM METRICS . 我需要更改查询以从表中获取相同的列,但也需要对保留相同列名的某些列应用计算。
例如,此函数 CONVERT(INT, HASHBYTES('SHA2_256', metric_1)) % 10 将应用于 metric_1 列和 (metric_2 * 0.9) / 100metric_2 列。
这似乎需要一个嵌套的select语句。但与上述说法结合起来应该是什么样子呢?
我只需要保留所有具有原始名称的现有列,并应用函数更改某些列的值。大约有100列,因此在select中列出每一列在本例中不起作用。我对表有只读访问权限,所以不能使用alter语句。

ny6fqffe

ny6fqffe1#

通过在列列表中添加表达式,可以根据需要向结果集中添加列。例如,您可以执行以下操作:

SELECT TOP 100
  *,
  CONVERT(INT, HASHBYTES('SHA2_256', metric_1)) % 10 as formula1,
  (metric_2 * 0.9) / 100 as formula2
FROM METRICS
ORDER BY ...

此查询提供所有现有列以及两个额外列: formula1 以及 formula2 .
现在,如果要替换现有列,则需要省略 * . 例如:

SELECT TOP 100
  CONVERT(INT, HASHBYTES('SHA2_256', metric_1)) % 10 as metric_1,
  (metric_2 * 0.9) / 100 as metric_2
FROM METRICS
ORDER BY ...

相关问题