Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
4 / 4 / 1
Регистрация: 09.10.2019
Сообщений: 247

Округление TSQL

04.02.2022, 16:51. Показов 1672. Ответов 8

Студворк — интернет-сервис помощи студентам
Здравствуйте все!

SQL
1
2
3
SELECT 
SQ.ValueAmountTO
,ROUND(SQ.ValueAmountTO, 2)
возвращает

ValueAmountTO (Отсутствует имя столбца)
22723,365 22723,36

Значение SQ.ValueAmountTO получено в JOIN, это сумма по группировке.
Почему такое странное округление? отбрасывание...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.02.2022, 16:51
Ответы с готовыми решениями:

Вопрос по TSQL
К знатокам tsql вопрос. Есть на сервере хранимая процедура. Она возвращает результат выборки. Я хотел бы также передать в качестве...

TSQL Выборка из 2х таблиц
Есть 2 таблицы CREATE TABLE #_TempCity ( BIGINT IDENTITY (1, 1) NOT NULL, ...

Перенос html в TSQL
Добрый день! Стоит задача - сгенерировать письмо, и по каждой строке в таблице сгенерировать html шаблон, вставить туде значение из...

8
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
04.02.2022, 17:06
там же банковское округление - 5 округляется до ближайшего четного
22723,375 округлится до 22723,38
1
4 / 4 / 1
Регистрация: 09.10.2019
Сообщений: 247
04.02.2022, 17:17  [ТС]
А почему тогда так:
SQL
1
2
3
4
SQ.ValueAmountTO
,CAST(ROUND(SQ.ValueAmountTO, 3) AS DECIMAL(20,2)) AS RO3_D2
,CAST(ROUND(SQ.ValueAmountTO, 2) AS DECIMAL(20,2)) AS RO2_D2
,ROUND(SQ.ValueAmountTO, 2)  AS RO2
Возвращает (2 строки и по разному):

ValueAmountTORO3_D2RO2_D2RO2
2731,7252731.722731.722731,72
22723,36522723.3722723.3622723,36

Для 2-ой строки в RO3_D2 нужный результат, а в 1-ой строке нет
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
04.02.2022, 17:41
ой, я все напутал, то ж в делфине и vb есть такое, в ms sql не банковское округление. я не знаю почему у тебя так округляет. А какой тип у ValueAmountTO?
1
4 / 4 / 1
Регистрация: 09.10.2019
Сообщений: 247
07.02.2022, 09:05  [ТС]
Извините за долгое молчание - в выходные нет доступа. У ValueAmountTO сложное происхождение
Это SUM(типа money) * float.
Вроде как должно быть float.

Добавлено через 2 часа 43 минуты
Пришлось делать так :

SQL
1
CAST(CAST(SQ.ValueAmountTO AS DECIMAL(25,3)) AS DECIMAL(25,2))
Получилось корректно на всём наборе данных.
0
4 / 4 / 1
Регистрация: 09.10.2019
Сообщений: 247
10.02.2022, 06:49  [ТС]
Цитата Сообщение от Тормоз Посмотреть сообщение
Получилось корректно на всём наборе данных.
Но это, скорее всего, совпадение
И надо искать правильное решение
0
 Аватар для Andrey-MSK
3349 / 2235 / 388
Регистрация: 14.08.2018
Сообщений: 7,557
Записей в блоге: 4
10.02.2022, 09:16
Цитата Сообщение от Тормоз Посмотреть сообщение
И надо искать правильное решение
T-SQL
1
2
-- 9-ти цифр и 2-х разрядов хватит на все случаи в жизни
ALTER TABLE dbo.MyTable ALTER COLUMN ValueAmountTO DECIMAL (11, 2)
Добавлено через 1 минуту
или какое там там у вас поле...
1
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
10.02.2022, 22:46
Andrey-MSK, на самом деле, хватает моментов, когда 2 знаков после запятой мало, хотя бы для курсов валют, там округление до 5 знаков, ещё много таких случае. с ходу не скажу, но могу завтра описать ещё случаи, если не забуду)
1
4 / 4 / 1
Регистрация: 09.10.2019
Сообщений: 247
14.02.2022, 17:22  [ТС]
Сейчас нет под рукой SQL, потому пишу просто сам замысел - надо найти разницу между округлённым DECIMAL(20,2) и начальным float, эту разницу округлить до DECIMAL(x,3), и, если она >= 0,005, то к ранее полученному округлённому значению +0,01, иначе нет.
Вот как-то так, и, похоже, можно выполнить в том же SELECT.

Добавлено через 2 минуты
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
когда 2 знаков после запятой мало
Да, когда-то тестировал несколько(довольно много) различных ситуаций, получалось. что надо 6 знаков после запятой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.02.2022, 17:22
Помогаю со студенческими работами здесь

Отличие функций от процедур в tsql
Не могу разобраться

Хранимые процедуры: организовать цикл while, используя TSQL
Всем доброго времени суток! Вопрос: Как организовать цикл WHILE используя язык Transact SQL? А конкретно из таблицы выбрать поочередно...

Редактирования кода хранимой процедуры через TSQL
Есть две базы А и Б, у них есть одинаковые по имени хранимые процедуры, требуется взять код хранимой процедуры из базы А заменить ее в базе...

TSQL Изменить код телефона с 499 на 495 , можно использовать Case
SELECT * FROM Запрос2 Update Запрос2 Set Контактный_телефон = CASE WHEN substring(Контактный_телефон, 2, 3) = '499' then '495' END ...

TSQL Задание по выборке Посчитать количество дисциплин, которые ведет каждый из преподавателей и среднюю оплату часа
Таблица преподаватели Код_преподавателя int Фамилия nchar(50) Имя nchar(50) Checked Отчество nchar(50) Образование nchar(50) Стаж...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru