Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

Откуда:
Сообщений: 1062
кириллk,

Я понимаю что я делаю что то не так, но понять что :) не могу :)
27 фев 12, 13:30    [12156589]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
кириллk
Если в case условие не ставить, оно не сработает :)

Зачем тогда конструкция CASE использована в запросе


кириллk
Я понимаю что я делаю что то не так, но понять что :) не могу :)

select sum(p.cena * V."top") from mytable - чего еще вам не хватает ?
27 фев 12, 13:35    [12156638]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

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

Спасибо конечно! :)


Но если я уберу cse я не смогу привести к виду :
январь февраль
5000 6000

SELECT январь=
CASE
WHEN p.five is not null THEN p.cena * V."top"
ELSE 'Not'
end,
'февраль' =
27 фев 12, 13:41    [12156695]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
кириллk
Но если я уберу cse я не смогу привести к виду :
январь февраль
5000 6000

Вы и так не приведете к такому виду
По-вашим же словам в p.five нет NULL-ов
27 фев 12, 13:44    [12156722]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

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


Вот я наконец-то смог сформулировать задачу
А вы можете подсказать как тогда так сделать?

К сообщению приложен файл. Размер - 46Kb
27 фев 12, 13:51    [12156778]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

Откуда:
Сообщений: 1062
кириллk,
дата меняется так :) т.е я могу сделать вместо чисел месяц
CONVERT(char(10), ADRIVER.date, 20)
27 фев 12, 13:52    [12156789]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
кириллk
А вы можете подсказать как тогда так сделать?

Изучать функции работы с датой
В частности извлечения из даты ее составляющих
BOL - Functions - Datetime functions
27 фев 12, 13:53    [12156803]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

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

Как мне апрель май рядом поставить :) в 2 столбца! :(
27 фев 12, 13:58    [12156852]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

Откуда:
Сообщений: 1062
кириллk,

CONVERT(char(3), Е1.date, 7)

вот сгрупировал по месяцам
27 фев 12, 13:59    [12156875]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
iljy
Member

Откуда:
Сообщений: 8711
кириллk
Glory,

Как мне апрель май рядом поставить :) в 2 столбца! :(

PIVOT либо GROUP BY
27 фев 12, 14:06    [12156950]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

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

а как же case???
27 фев 12, 14:11    [12157019]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
iljy
Member

Откуда:
Сообщений: 8711
кириллk
iljy,

а как же case???

что - case?
27 фев 12, 14:17    [12157070]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

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

я хочу не только развернуть но и производить с ними вычисления...

Если честно я запутался.
27 фев 12, 14:23    [12157138]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
кириллk, а еще и месяцев может быть произвольное кол-во, и в разные года, верно?

* если верно, то только динамика вас выручит.
27 фев 12, 14:33    [12157245]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

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

Мне бы пока разобраться с фиксированнымми
27 фев 12, 14:47    [12157420]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
iljy
Member

Откуда:
Сообщений: 8711
кириллk
iljy,

я хочу не только развернуть но и производить с ними вычисления...

Если честно я запутался.

А уж как остальные запутались
Развернуть можно с помощью PIVOT (в простом случае) либо GROUP BY, вычисления производятся с использованием арифметических выражений. Если наконец полностью и внятно, со скриптом данных и примером результата, изложите задачу, то шансы на ответ значительно повысятся.
27 фев 12, 14:50    [12157454]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

Откуда:
Сообщений: 1062
ВОТ ОНО


select sum(p.cena * V."top") as total1, sum(p.cena * V."top") as total2 from mytable

скажите пожалуйста как теперь total1/ total2
27 фев 12, 20:12    [12160211]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
iljy
Member

Откуда:
Сообщений: 8711
кириллk
ВОТ ОНО


select sum(p.cena * V."top") as total1, sum(p.cena * V."top") as total2 from mytable

скажите пожалуйста как теперь total1/ total2


select nullif(sign(abs(sum(p.cena * V."top"))),0)
27 фев 12, 20:53    [12160349]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

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

Спасибо, я почитал мануал " Возвращает значение NULL, если два указанных выражения равны."

А если будет 3 и больше значения?, тогда надо использовать case
28 фев 12, 11:16    [12162184]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
iljy
Member

Откуда:
Сообщений: 8711
кириллk,

используйте
28 фев 12, 11:19    [12162201]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

Откуда:
Сообщений: 1062
кириллk
кириллk,


SELECT sum(p.cena * V."top") as total,sum(p.cena * V."top") as total2 =
CASE
WHEN p.five is not null THEN total / total2"
ELSE 'Not'
end



sql ругается на синтаксис
28 фев 12, 11:22    [12162218]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
кириллk
sql ругается на синтаксис

Значит он неправильный
28 фев 12, 11:28    [12162259]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
кириллk, либо я че-то не понимаю, либо у вас total == total2, тогда у вас только 3 варианта 0,1,NULL :)
28 фев 12, 11:36    [12162314]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

Откуда:
Сообщений: 1062
кириллk
кириллk
кириллk,


SELECT sum(p.cena * V."top") as total,sum(p.cena * V."top") as total2 =
CASE
WHEN p.five is not null THEN total / total2"
ELSE 'Not'
end



sql ругается на синтаксис




Недопустимое имя столбца "total".
Недопустимое имя столбца "total2".

Почему то нельзя THEN total / total2"
28 фев 12, 11:37    [12162324]     Ответить | Цитировать Сообщить модератору
 Re: можно посчитать внутри sql не выгружая в excel  [new]
кириллk
Member

Откуда:
Сообщений: 1062
кириллk,

kDnZP

Я бы очень хотел разобраться с case

Мне кажется это очень полезная функция
28 фев 12, 11:38    [12162342]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить