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

select float_column from table1

в float_column содержется целочисленные данные, их необходимо округлить до 2х знаков после запятой
(вывожу через TADOQuery в TDBGrid)

спасибо
3 апр 03, 14:04    [163840]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
Slav
Member

Откуда: МАсква, великий и прекрасный город
Сообщений: 9047
Округлить целочисленные - это как? Они вроде уже округленные...
3 апр 03, 14:18    [163880]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
>вывожу через TADOQuery в TDBGrid

Ну дык и поставь в редакторе поле в DisplayFormat #.##

И зачем используешь тип данных float. Он же с приблизительной точностью. Для него 2*2 может быть 3.9999999999. Для целых int, для дробных numeric c соотвествующей размерностью и точностью.
3 апр 03, 14:19    [163883]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
Pavel
Member

Откуда: Кемерово
Сообщений: 2435
Ага, веселые условия. Округлить то можно и целочисленные, но вот после запятой - трудно. Практически невозможно.

SELECT ROUND(float_column, 2) FROM table1 пробовал?
3 апр 03, 14:23    [163889]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
SkyN
Guest
Сори, конечно же тип float

а где поставить DisplayFormat?
3 апр 03, 14:24    [163892]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
У Field-а
3 апр 03, 14:28    [163899]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
SkyN
Guest
re: ROUND(float_column, 2)
а если число 1.20 , то округляет до 1.2, а хочится 1,20

но в общем способ подходит, спасибо
3 апр 03, 14:30    [163902]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
Pavel
Member

Откуда: Кемерово
Сообщений: 2435
А чтобы было 1.20 послушайся pkarklin
3 апр 03, 14:33    [163909]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
2 Pavel

>А чтобы было 1.20 послушайся pkarklin

Чтоб было 1.20 надо #.00
3 апр 03, 14:37    [163915]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
Pavel
Member

Откуда: Кемерово
Сообщений: 2435
Ну это я вааще, про формат...
3 апр 03, 14:38    [163918]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
Slav
Member

Откуда: МАсква, великий и прекрасный город
Сообщений: 9047
Что-то день сегодня не задался... Мы про округление говорим или про формат вывода в TDBGrid ? И если второе - то где, в Delphi?
3 апр 03, 14:47    [163927]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
2Slav
Вай, ты знал....(с)
Разве вновинку видеть Делфи-вопросы/проблемы на форуме по MSSQL ?
Может даже хорошо, что Делфистов все больше, а СИшников все меньше :-) :-)
(добрая такая шутка !..)
3 апр 03, 18:29    [164211]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
Гнездин Петр
Member

Откуда: Москва
Сообщений: 359
Может даже хорошо, что Делфистов все больше, а СИшников все меньше
Ага! Глядишь, СИшники вскоре будут на вес золота... Зарплату им поднимут... :-)
3 апр 03, 18:48    [164233]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
Slav
Member

Откуда: МАсква, великий и прекрасный город
Сообщений: 9047
LSV,

да меня поразило, что SkyN ответ с ROUND удовлетворил. Может, конечно, он про это и спрашивал...
Просто я его вопрос иначе понял. Как в TDBGrid выводить
23.00
345.45
6789.00
Решил и свою собственную программку причесать, чтоб красиво было. Но не нашел! Нет в TDBGrid properties DisplayFormat. И Fields тоже ни при чем. Смотрел и в 5 и в 7. Да ладно, это надо в другой форум идти...
3 апр 03, 19:27    [164258]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
2 Slav

Решил и свою собственную программку причесать, чтоб красиво было. Но не нашел! Нет в TDBGrid properties DisplayFormat. И Fields тоже ни при чем. Смотрел и в 5 и в 7. Да ладно, это надо в другой форум идти...

Как раз Fields и причем. В Fields Editor набора встаешь на нужное поле, глядиш в Object Inspector и ба, DisplayFormat нарисовался, вот туда и пиши #.00, а можно и # ##0.00, чтоб с разделителями тысяч.
4 апр 03, 07:56    [164439]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
Slav
Member

Откуда: МАсква, великий и прекрасный город
Сообщений: 9047
pkarklin,

по-моему, судьба просто обиделась на меня за что-то :-( Все против того, чтоб я тебя понял.
В общем это не важно, я программку эту давно сдал. Так, подретушировать захотел.
Delphi 7. Объект TDBGrid. Правая кнопка. Первое разочарование - Columns Editor есть, но никакого Fields Editor'а. Вхожу, встаю на колонку. Второе разочарование - в Object Inspector на букву D только DropDownRows. Идем другим путем. В Help ищу DisplayFormat. Нахожу, входит в четыре объекта. Третье разочарование - только не в TDBGrid. Посмотрел и в Delphi 5... Хватит разочарований за одно утро :-)
4 апр 03, 09:29    [164494]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
2 Slav

>Хватит разочарований за одно утро :-)

Не надо разочарований. Гляди на вещи проще. Если чего-ты где-то не увидел - значит этого там действительно нет. :-)

А теперь процитирую самого себя.
В Fields Editor набора встаешь на нужное поле, глядиш в Object Inspector и ба, DisplayFormat нарисовался, вот туда и пиши #.00, а можно и # ##0.00, чтоб с разделителями тысяч.

Обращаю внимание, в Fields Editor набора встаешь на нужное поле, а не в Columns Editor встаешь на нужную колонку. DisplayFormat свойство TField и его не может быть у TColumn (TColumnEh). Так что кликай свою верную мышь по правой кнопке не на TDBGrid, а на TDataSet c которым ты работаешь (TADODataSet, например). И вот чудо, в контекстном меню находим Field Editor... Смело тыкаем по нему. Если в открывшемся окне у тебя девственная чистота, значит ты юзаешь динамически создаваемые поля, и DisplayFormat можно им присвоить тока в рантайм. А вот если ды добавишь, опять же через правую кнопочку мыши, поля в коллекцию, то и сможешь установить нужные тебе свойства для каждого конкретного поля. Рекомендую попробовать.
4 апр 03, 09:43    [164511]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
Slav
Member

Откуда: МАсква, великий и прекрасный город
Сообщений: 9047
pkarklin,

Да не такой уж и плохой день сегодня! Спасибо тебе большое! Может не здесь надо рассказывать, да ладно уж. И SkyN'у может быть полезно.

Я одну программу сдал (года 1.5 назад), а там в TDBGrid числа выводятся. Конечно, хотел сделать красиво - был уверен, что форматировать вывод надо у того, кто и выводит - у TDBGrid'а. Нафиг это делать где-нибудь в Query или Table? Ну зачем там DisplayFormat, если я их даже может и выводить не буду? Поля формирую динамически - Fields Editor отпадает. Сколько же я корячился с
Query.FieldByName('myname').DisplayFormat := '# ##0.00'
На это стабильно идет
Undeclared Identifer 'DisplayFormat'
Я опух, плюнул, всучил так. Но сегодня решил добить. FieldByName возвращает TField, а DisplayFormat свойство TNumericField, TDateTimeField и т.д. И писать надо
(Query.FieldByName('myname') as TNumericField).DisplayFormat := '# ##0.00'
Позвонил клиенту - мол, выпустил новый релиз. Еще раз спасибо!
4 апр 03, 14:05    [164974]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: округление в sql запросе  [new]
stanford
Member

Откуда:
Сообщений: 24
А если нужно округлить среднее значение, бедет правильно записать это так?
SELECT AVG ROUND(имя_поля)???
31 окт 09, 14:02    [7866369]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
RAndrey
Member

Откуда:
Сообщений: 324
SkyN
re: ROUND(float_column, 2)
а если число 1.20 , то округляет до 1.2, а хочится 1,20

но в общем способ подходит, спасибо


а можно еще, если уж там целые, convert(varchar, round(float_field)) + '.00'

гы...
31 окт 09, 14:47    [7866498]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3235
stanford
А если нужно округлить среднее значение, бедет правильно записать это так?
SELECT AVG ROUND(имя_поля)???
Правильно будет знать синтаксис:
select round(avg(FieldName), 0)
31 окт 09, 15:24    [7866561]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: округление в sql запросе  [new]
alexf3791
Member

Откуда:
Сообщений: 2
Существует ли возможность в запросе сделать округление по следующему алгоритму:
1,01-1,02=1,00
1,03-1,07=1,05
1,08-1,09=1,10
?
31 мар 18, 01:11    [21301315]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36893
alexf3791
Существует ли возможность в запросе сделать округление по следующему алгоритму:
1,01-1,02=1,00
1,03-1,07=1,05
1,08-1,09=1,10
?
case
31 мар 18, 01:13    [21301316]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
alexf3791
Существует ли возможность в запросе сделать округление по следующему алгоритму:
1,01-1,02=1,00
1,03-1,07=1,05
1,08-1,09=1,10
?
round(field * 2, 1) / 2
31 мар 18, 08:01    [21301426]     Ответить | Цитировать Сообщить модератору
 Re: округление в sql запросе  [new]
alexf3791
Member

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

Гениально, спасибо!
Думал, будет намного сложнее )
31 мар 18, 15:25    [21301852]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить