何时将计算的自定义列添加到查询中 - 立即或使用连接

时间:2014-05-14 18:28:32

标签: sql sql-server

我想在下面的查询中添加两列:

  • 第一列是可用空间的百分比= freespace/capacity
  • 第二列将是已用空间量= capacity-freespace

这是我的查询

SELECT     SystemName, Caption, Label, Capacity, FreeSpace
FROM         CCS_Win32_Volume
ORDER BY SystemName, Caption

USE [CentralConfigurationStore]
GO

将它添加到查询中或者在加入两个表之后执行它是更好的方法吗?

如果有人能帮我解决这个问题,我们将不胜感激!

3 个答案:

答案 0 :(得分:2)

将计算字段直接添加到查询中时,计算字段不会增加太多开销,因为您正在计算的数据已经从磁盘中读取。

SELECT SystemName, Caption, Label, Capacity, FreeSpace,
       100*freespace/capacity [% of free space],
       capacity-freespace [used space]
FROM CCS_Win32_Volume
ORDER BY SystemName, Caption

An SQLfiddle to test with

答案 1 :(得分:1)

我认为问题是方法,而不是实际的T-SQL ......

除非您的查询在其他地方使用并且更改它可能会破坏某些内容,否则我会更新您现有的查询。 如果在其他地方使用它并且更新所有相关进程/查询将需要做大量工作,那么我将使用完整结果创建单独的查询。创建一个只包含计算值的查询似乎没什么意义,因为正如你所说的那样,你必须将它连接回原始查询,这似乎更无效。

无论如何,这只是我个人的意见。

此致

的Al。

答案 2 :(得分:-1)

只是别名计算机值。此外,您应该首先使用USE命令:

USE [CentralConfigurationStore]
SELECT     SystemName, Caption, Label, Capacity 
   , FreeSpace, freespace/capacity AS FreeSpacePercent
   , capacity-freespace AS UsedSpace
FROM         CCS_Win32_Volume
ORDER BY SystemName, Caption