我正在尝试使用在 SELECT 中创建的别名,但在 WHERE 语句中。我知道它不起作用,我只是在另一个 SO 问题中读到了为什么。
但我的问题是:在不重复子查询的情况下,我应该采取什么其他解决方案来完成这项工作?
SELECT p.PatientID, p.PatientType, p.AccountNumber, p.FirstName + ' ' + p.LastName PatientFullName, p.CreatedDate,
DATEDIFF(hour, p.CreatedDate, GETDATE()) TotalTime,
(SELECT AVG(BGValue) FROM BloodGlucose WHERE PatientID = p.PatientID) AvgBG
FROM Patients p
WHERE AvgBG > 60;
我知道这有效:
SELECT p.PatientID, p.PatientType, p.AccountNumber, p.FirstName + ' ' + p.LastName PatientFullName, p.CreatedDate,
DATEDIFF(hour, p.CreatedDate, GETDATE()) TotalTime,
(SELECT AVG(BGValue) FROM BloodGlucose WHERE PatientID = p.PatientID) AvgBG
FROM Patients p
WHERE (SELECT AVG(BGValue) FROM BloodGlucose WHERE PatientID = p.PatientID) > 60;
但我不想重复那个子查询。而且我很确定它在性能方面不是很明智,所以这就是我在这里寻求更好解决方案的原因。
谢谢!