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;
しかし、そのサブクエリを繰り返したくありません。そして、パフォーマンスに関してはあまり良くないと確信しているので、ここでより良い解決策を求めているのです.
ありがとう!