执行以下 sql 查询时出现错误。
SELECT
RTRIM(name) AS [Segment Name],
growth,groupid AS [Group Id],
filename AS [File Name],
CAST(size/128.0 AS DECIMAL(10,2)) AS [Size in MB],
CAST(FILEPROPERTY(name, 'SpaceUsed')/128.0 AS DECIMAL(10,2)) AS [Space Used],
CAST(size/128.0-(FILEPROPERTY(name, 'SpaceUsed')/128.0) AS DECIMAL(10,2)) AS [Available Space],
CAST((CAST(FILEPROPERTY(name, 'SpaceUsed')/128.0 AS DECIMAL(10,2))/CAST(size/128.0 AS DECIMAL(10,2)))*100 AS DECIMAL(10,2)) AS [Percent_Used]
FROM
sysfiles
WHERE
growth = 0 AND Percent_Used > 60
ORDER BY
groupid DESC
Run Code Online (Sandbox Code Playgroud)
错误说:
消息 207,级别 16,状态 1,第 7 行
无效的列名称“Percent_Used”。
为什么我会收到这个错误??
如果您看到查询的逻辑顺序处理 where 子句在选择之前进行评估。要使其工作,您需要使用派生表概念。
1. FROM
2. ON
3. OUTER
4. **WHERE**
5. GROUP BY
6. CUBE | ROLLUP
7. HAVING
8. **SELECT**
Run Code Online (Sandbox Code Playgroud)
Select * from
(
SELECT
RTRIM(name) AS [Segment Name],
growth,groupid AS [Group Id],
filename AS [File Name],
CAST(size/128.0 AS DECIMAL(10,2)) AS [Size in MB],
CAST(FILEPROPERTY(name, 'SpaceUsed')/128.0 AS DECIMAL(10,2)) AS [Space Used],
CAST(size/128.0-(FILEPROPERTY(name, 'SpaceUsed')/128.0) AS DECIMAL(10,2)) AS [Available Space],
CAST((CAST(FILEPROPERTY(name, 'SpaceUsed')/128.0 AS DECIMAL(10,2))/CAST(size/128.0 AS DECIMAL(10,2)))*100 AS DECIMAL(10,2)) AS [Percent_Used]
FROM
sysfiles
) DT
WHERE growth = 0 AND Percent_Used > 60
ORDER BY groupid DESC
Run Code Online (Sandbox Code Playgroud)