sql - MB到TB的转换和聚合
问题描述
我在 SQL Server 中有一个数据集,我想将多个列从 MB 转换为 TB,并减去将条件设置为特定日期的两列。
totalMB freeMB date
12204984 6493286 11/2/2020
期望的输出
totalTB freeTB usedTB date
11.63 6.19 5.44 11/2/2020
这就是我正在做的事情:
SELECT totalMB, freeMB, date, (totalMB/(1024*1024) AS totalTB, (freeMB/(1024*1024) AS freeTB),
totalTB - freeTB AS usedTB
FROM table
where date = '2020/11/2'
但是,我没有收到错误 - 语法无效,而不是所需的输出。我还在研究。任何建议表示赞赏
解决方案
您不能在select
. 但是您可以使用横向连接:
SELECT t.totalMB, t.freeMB, t.date, v.totalTB, v.freeTB,
(v.totalTB - v.freeTB) AS usedTB
FROM table t CROSS APPLY
(VALUES (t.totalMB/(1024*1024), t.freeMB/(1024*1024))
) v(TotalTB, freeTB)
WHERE date = '2020-11-02'
推荐阅读
- python - pycharm:如何在项目文件中包含库
- php - 日期范围明智地获取数据
- extjs - Sencha Architect “无法打开您的 app.json 文件”
- python - 如何让控制台“记住” Python 中的用户输入?
- java - 用于 postgreSQL 的 jdbc 驱动程序的 Jar 文件未出现在数据库连接的 JAR 列表中(eclipse)
- reactjs - 路由器在使用 WebRTC 的 React 应用程序中无法正常运行
- discord - discord.js 节点通过用户名获取用户
- angular - Angular 12 HttpInterceptor 等到http客户端方法完成
- python - 通过加入 ArcGIS 表更新 SQL 表时出错
- chart.js - chart.js 如何强制最小和最大 y 轴值