通常在查询我的MS SQL Server数据库时,我需要创建一个计算字段,例如
(CASE WHEN A.type = 'Workover' THEN 'Workover'
ELSE (CASE WHEN substring(C.category, 2, 1) = 'D' THEN 'Drilling'
WHEN substring(C.category, 2, 1) = 'C' THEN 'Completion'
WHEN substring(C.category, 2, 1) = 'W' THEN 'Workover'
ELSE 'Other'
END)
END)
然后我需要按此计算字段(除其他外)对结果分组。因此,我在SELECT和GROUP BY子句中都进行了相同的计算。SQL Server是实际上执行两次这些计算,还是仅执行一次就足够聪明?