Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Многократное использование результата вычисления в одном запросе  [new]
max aka max
Member

Откуда:
Сообщений: 204
Доброго времени суток!

В запросе я беру цену товара (price_new) из разных полей исходя из типа накладной, но в этом же запросе полученная цена price_new должна участовать для вычисления сумм накладной и так далее, есть ли способ использовать price_new нижеследующим образом:

select 
kol, 
CASE WHEN t.nakl_type='prixod_inv' THEN iif(r.reg_quan>0, r.reg_price,0)
ELSE 
	CASE WHEN t.nakl_type='prixod_otk' THEN  r.reg_price
	ELSE 
		CASE WHEN t.nakl_type='prixod_kup' THEN t.price_old
		ELSE 
			CASE WHEN t.nakl_type='prixod_prm' THEN  r.reg_price
			ELSE 
				CASE WHEN t.nakl_type='rasxod_vp' THEN  t.price_old
				ELSE 
					CASE WHEN t.nakl_type='rasxod_zvk' THEN  r.reg_price_nas
					ELSE 
						r.reg_price
					END 
				END 
			END 
		END 
        END 
END as price_new,
kol*price_new as nakl_sum
?

Спасибо.
4 июл 15, 14:17    [17851967]     Ответить | Цитировать Сообщить модератору
 Re: Многократное использование результата вычисления в одном запросе  [new]
Bator
Member

Откуда: Порт пяти морей
Сообщений: 439
outer apply
4 июл 15, 14:40    [17851995]     Ответить | Цитировать Сообщить модератору
 Re: Многократное использование результата вычисления в одном запросе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
select 
  kol, 
  pn.price_new,
  kol*pn.price_new as nakl_sum
from ...
cross apply (
  select 
  CASE t.nakl_type 
    when 'prixod_inv' THEN iif(r.reg_quan>0, r.reg_price,0)
    when 'prixod_otk' THEN  r.reg_price
    when 'prixod_kup' THEN t.price_old
    when 'prixod_prm' THEN  r.reg_price
    when 'rasxod_vp' THEN  t.price_old
    when 'rasxod_zvk' THEN  r.reg_price_nas
    ELSE 
      r.reg_price
  END  as price_new
) pn


Сообщение было отредактировано: 4 июл 15, 14:41
4 июл 15, 14:40    [17851996]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить