sql - 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 ...
此查询提供所有现有列以及两个额外列: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 ...
推荐阅读
- python - 将 cumsum() 输出转换为 xarray 中的二进制数组
- javascript - 将唯一对象推入 JAVASCRIPT 中的数组
- swift - 如何将 URLSession.DataTaskPublisher 请求排队,以便一次只发出一个?
- javascript - 按钮重载问题
- python - 无法更改全局列表
- php - 如何在laravel中仅显示用户表中的管理员名称
- c# - 将数据表 id / header / value 转置到具有这些标题的另一个表
- python - root_logger_handlers_backup = _root_logger.handlers.copy() AttributeError: 'list' 对象没有属性 'copy'
- javascript - reactjs中如何加速大数据?
- javascript - 秒到分秒倒计时