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

Округление TSQL

04.02.2022, 16:51. Показов 1636. Ответов 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
3319 / 2206 / 387
Регистрация: 14.08.2018
Сообщений: 7,416
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru