Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Операция с полями без подзапроса  [new]
Bryk_Alien
Guest
Здравствуйте!
Опишу ситуацию
Написал я большой, огромный и сложны хапрос на 600 строк аж
Пердставьте что там есть поле [Цена]
Оно высчитывается с помощью всяких корявых условий, и в результате поле в предложении SELECT выглядит как:
SELECT
...
,CASE [дибильные условия на 20 строк]
ELSE 0 END AS [Цена]
Так же там есть поле [Скидка], которое выглядит ещё чудовещнее
SELECT
...
,CASE [дибильные условия на 20 строк]
ELSE 0 END AS [Цена]
,CASE [не менее дибильные условия]
ELSE 0 END AS [Скидка]
И теперь, мне надо ВСЕГО ЛИШЬ(!) умножить одно на другое...
И я знаю только 2 способа: повторить эти два дибильных CASE'а со знаком умножения между ними
Или обёртывать всё это в подзапрос и ещё более запутать эту дребедень

Может есть какой-нибудь способ прописать что-то вроде
SELECT
...
,CASE [дибильные условия на 20 строк]
ELSE 0 END AS [Цена]
,CASE [не менее дибильные условия]
ELSE 0 END AS [Скидка]
,[Цена]*[Скидка] AS [Сумма]
А я, дурак, сижу и страдаю хернёй, не зная об этом?
А?

Модератор: Вложение удалено.


Сообщение было отредактировано: 26 ноя 15, 15:54
26 ноя 15, 15:51    [18476606]     Ответить | Цитировать Сообщить модератору
 Re: Операция с полями без подзапроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
Bryk_Alien
Или обёртывать всё это в подзапрос и ещё более запутать эту дребедень

И в чем еще большая запутанность будет выражаться ?
select [Цена], [Скидка], [Цена]*[Скидка] AS [Сумма]
from ( SELECT
    ...
    ,CASE [дибильные условия на 20 строк]
        ELSE 0 END AS [Цена]
,CASE [не менее дибильные условия]
        ELSE 0 END AS [Скидка]
...
)
26 ноя 15, 15:59    [18476661]     Ответить | Цитировать Сообщить модератору
 Re: Операция с полями без подзапроса  [new]
invm
Member

Откуда: Москва
Сообщений: 9646
SELECT
 ...,
 a.[Цена],
 b.[Скидка],
 a.[Цена] * b.[Скидка] AS [Сумма]
FROM
 ... CROSS APPLY
 (SELECT CASE [дибильные условия на 20 строк] ELSE 0 END AS [Цена])) a CROSS APPLY
 (SELECT CASE [не менее дибильные условия] ELSE 0 END AS [Скидка])) b
26 ноя 15, 16:00    [18476668]     Ответить | Цитировать Сообщить модератору
 Re: Операция с полями без подзапроса  [new]
Bryk_Alien
Guest
invm,

Шайтан!!!!!
Спасибо!!!!!!!!!!!!!!! :) :) :)
26 ноя 15, 16:15    [18476789]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить