SQL Server-将计算应用于各种列的嵌套SELECT



我当前的查询非常简单,如下所示:SELECT TOP 100 * FROM METRICS。我需要更改查询以从表中获得相同的列,但也需要对保留相同列名的某些列应用计算。

例如,此函数CONVERT(INT, HASHBYTES('SHA2_256', metric_1)) % 10将应用于metric_1列,(metric_2 * 0.9) / 100将应用于metric_2列。

这似乎需要一个嵌套的SELECT语句。但是,与上面的陈述结合起来应该是什么样子呢?

我只需要保留所有具有原始名称的现有列,只需更改应用函数的某些列的值。大约有100列,所以在SELECT中列出每一列在这种情况下都不起作用。我对该表具有只读访问权限,因此不能使用ALTER语句。

您可以通过在列列表中添加表达式,根据需要向结果集添加列。例如,你可以做:

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

此查询提供所有现有列以及两个额外列:formula1formula2

现在,如果要替换现有列,则需要省略*。例如:

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 ...

最新更新