2015-09-12 2 views
1

У меня есть следующий запрос:Как избежать вычисляемого-столбца дублировать вычисления в SQL Query

Use Northwind 

select OrderID as 'Order ID', (UnitPrice * Quantity) as 'Total', case 
when (UnitPrice * Quantity) > 100 then 'Good' else 'Bad' 
end as 'Rating' from [Order Details] 

Теоретически, он вычисляет (UnitPrice * Quantity) два раза, и я считаю, что это плохой выбор для исполнения.

Как это сделать (избегая дублирования вычислений) элегантным способом?

+1

создать вычисляемый столбец в самой таблице. – DarkKnight

ответ

1

Добавить вычисляемый столбец:

CREATE TABLE [Order Details] 
    (..., UnitPrice INT, Quantity INT, Total AS UnitPrice * Quantity PERSISTED); 


SELECT 
    OrderID AS 'Order ID', 
    Total, 
    CASE 
     WHEN Total > 100 THEN 'Good' 
     ELSE 'Bad' 
    END AS 'Rating' 
FROM [Order Details]; 
Смежные вопросы