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

Откуда:
Сообщений: 200
вот я делаю выборку
select a1.type_cat,a1.name,
isnull((case a1.NN when 0 then 0 else  a1.summ/a1.NN end),0) as S1,
isnull((case a1.NN when 0 then 0 else  a1.calculat/a1.NN end),0) as S2,
isnull((case a1.summ when 0 then 0 else  (a1.summ-a1.calculat)/a1.summ end),0) as S3,
isnull((case a1.NN when 0 then 0 else  (a1.summ-a1.calculat)/a1.NN end),0) as S4,
isnull((case a.NN when 0 then 0 else  a.summ/a.NN end),0) as L1,
isnull((case a.NN when 0 then 0 else  a.calculat/a.NN end),0) as L2,
isnull((case a.summ when 0 then 0 else  (a.summ-a.calculat)/a.summ end),0) as L3,
isnull((case a.NN when 0 then 0 else  (a.summ-a.calculat)/a.NN end),0) as L4

а можно как-то радотать с именами S1 для дальнеших вычислений?
например L4-S4 Столбец добавить
22 фев 12, 14:35    [12137343]     Ответить | Цитировать Сообщить модератору
 Re: Расчеты  [new]
Glory
Member

Откуда:
Сообщений: 104751
Использовать вложенный запрос
22 фев 12, 14:50    [12137466]     Ответить | Цитировать Сообщить модератору
 Re: Расчеты  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Glory
Использовать вложенный запрос
Или CTE.
В сущности, то же самое.
22 фев 12, 14:54    [12137513]     Ответить | Цитировать Сообщить модератору
 Re: Расчеты  [new]
Рострига Артур
Member

Откуда:
Сообщений: 200
iap,

а как округлить такое выражение
ROUND((a1.summ-a1.calculat)/a1.summ),2)
22 фев 12, 15:52    [12137999]     Ответить | Цитировать Сообщить модератору
 Re: Расчеты  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Рострига Артур
iap,

а как округлить такое выражение
ROUND((a1.summ-a1.calculat)/a1.summ),2)
А это не округление, по-Вашему?
22 фев 12, 15:54    [12138020]     Ответить | Цитировать Сообщить модератору
 Re: Расчеты  [new]
Рострига Артур
Member

Откуда:
Сообщений: 200
iap,

Ну так если бы работало я бы не спрашивал))
The round function requires 2 to 3 arguments.

оно берет первые скобки вычитания и не понимает что это все одно выражение.
22 фев 12, 15:56    [12138041]     Ответить | Цитировать Сообщить модератору
 Re: Расчеты  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Ну так если бы работало я бы не спрашивал))

левые и правые скобки пересчитайте.

Posted via ActualForum NNTP Server 1.5

22 фев 12, 15:58    [12138060]     Ответить | Цитировать Сообщить модератору
 Re: Расчеты  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Рострига Артур
iap,

Ну так если бы работало я бы не спрашивал))
The round function requires 2 to 3 arguments.

оно берет первые скобки вычитания и не понимает что это все одно выражение.
У Вас две открывающие скобки и три закрывающие.
Это ненормально, верно?

Скобку перед запятой уберите
22 фев 12, 15:59    [12138064]     Ответить | Цитировать Сообщить модератору
 Re: Расчеты  [new]
Glory
Member

Откуда:
Сообщений: 104751
Рострига Артур
оно берет первые скобки вычитания и не понимает что это все одно выражение.

Оно берет то, что вы ему даете
Скобки считать надо, а то на две открывающие скобки - три закрывающие
22 фев 12, 15:59    [12138066]     Ответить | Цитировать Сообщить модератору
 Re: Расчеты  [new]
Raoul
Member

Откуда:
Сообщений: 177
;with t as (
select a1.type_cat,a1.name,
isnull((case a1.NN when 0 then 0 else  a1.summ/a1.NN end),0) as S1,
isnull((case a1.NN when 0 then 0 else  a1.calculat/a1.NN end),0) as S2,
isnull((case a1.summ when 0 then 0 else  (a1.summ-a1.calculat)/a1.summ end),0) as S3,
isnull((case a1.NN when 0 then 0 else  (a1.summ-a1.calculat)/a1.NN end),0) as S4,
isnull((case a.NN when 0 then 0 else  a.summ/a.NN end),0) as L1,
isnull((case a.NN when 0 then 0 else  a.calculat/a.NN end),0) as L2,
isnull((case a.summ when 0 then 0 else  (a.summ-a.calculat)/a.summ end),0) as L3,
isnull((case a.NN when 0 then 0 else  (a.summ-a.calculat)/a.NN end),0) as L4
)
select *,L4-S4 as Diff from t
22 фев 12, 19:15    [12139331]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить