Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> уравнение !! 
V
    Опции темы
uranpro
Дата 22.5.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



у меня есть вьюшка View:
ID int,
Price int,
CurValue int

нужно найти sum(price) и отнять от него все значения CurValue, которые меньше нуля

т.е. примерно так : select sum(price) - (select curvalue from .. where curvalue < 0)
что-то типа этого, подскажите, что делать^


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Magnifico
Дата 22.5.2008, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 10
Всего: 17



имеется ввиду отнять от сгруппированной суммы  по конкретному id  сумму отрицательных значений CurValue по модулю 
этого же id
Код

select id ,sum(price - abs(case when curvalue < 0 then curvalue else 0 end))
from myView
group by id



--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
uranpro
Дата 23.5.2008, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



спасибо, сейчас проверю)


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Akina
Дата 23.5.2008, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



a abs зачем? минус на минус...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
uranpro
Дата 23.5.2008, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



Код

select sum(price - abs(case when curvalue < 0 then curvalue else 0 end))
from myView


вот что мне нужно^^, все работает

так (- abs) идет же... а если так сделать

Код

select sum(price + (case when curvalue < 0 then curvalue else 0 end))
from myView


будет работать?))) сча посмотрим


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Magnifico
Дата 23.5.2008, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 10
Всего: 17



ты конкретно говори что теб надо сделать:
отнять от суммы( прайс ) значения которые меньше нуля (то есть отрицательные) .Отрицательные По Модулю или Нет?
Если нет то это перация называется сложения положительного с отрицательным :  5 -  8 ,а отнять
это 5 - (-8)
и вообще пример приводи если на словах не получается объяснить



--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
uranpro
Дата 23.5.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



да мне нужно найти сумму продаж по Price и учесть возвраты(они лежат в CurValue)
поле возврата считается правильным, если оно <0
пример столбца CurValue:
10230
15200
-300
230
56210
2350
-1300
...

у меня есть еще один вопрос, странный глюк в MS SQL Server:

>= '20.05.2008' AND <= '20.05.2008'

эта выборка даст 0 строк, а вот эта выборка:
>= '20.05.2008' AND < '21.05.2008'

даст правильное число строк, на число 20.05.2008 !
и еще не работает запрос, когда ставишь = 20.05.2008

в чем проблема ? и как избавится от нее программно

зы: я бы прибавлял к последней дате (+1), но если там будет 30-ое или 31-ое число, то (((

выборка по полю Date (DateTime)

Это сообщение отредактировал(а) uranpro - 23.5.2008, 11:23


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Akina
Дата 23.5.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Цитата(uranpro @  23.5.2008,  12:21 Найти цитируемый пост)
>= '20.05.2008' AND <= '20.05.2008'
эта выборка даст 0 строк

Она даст все строки, где '20.05.2008 00:00:00'. Ни больше ни меньше.

Цитата(uranpro @  23.5.2008,  12:21 Найти цитируемый пост)
в чем проблема ? 

Для даты-времени надо использовать соответствующие конструкции. 
Код

Where ... Between ... And ...

Цитата(uranpro @  23.5.2008,  12:21 Найти цитируемый пост)
я бы прибавлял к последней дате (+1), но если там будет 30-ое или 31-ое число, то (((

DateAdd()


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Magnifico
Дата 23.5.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 10
Всего: 17



'20.05.2008' при конвертации в дату это будет 20.05.2008 :00:00:000   12 часов ночи -начало суток
'21.05.2008'  --> 21.05.2008 :00:00:000  начало других суток   

>= '20.05.2008' AND < '21.05.2008' получаем диапазон сутки

>= '20.05.2008' AND <= '20.05.2008'  а тут диапазон ноль

и дату при передаче в sql server надо в формате строки 'yyyymmdd' (что бы избежать многих проблем)
http://www.sql.ru/faq/faq_topic.aspx?fid=109


--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
uranpro
Дата 23.5.2008, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



да, я уже исправил с DD.MM.YYYY на YYYY/MM/DD
спасибо за информацию, пойду проверять


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.