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

Откуда: Rudnyy
Сообщений: 198
здравствуйте!
я конечно понимаю что эта тема уже избитая, но вопрос остается
create table #tmpresult
(Id int null, Name varchar(255) null, Razmer varchar(255) null, Sort varchar(255) null, S varchar(255) null,
CQuantity1 decimal null, CQuantity2 decimal null, CQuantity3 decimal null, CQuantity4 decimal null, CQuantity5 decimal null, CQuantity6 decimal null,
CQuantity7 decimal null, CQuantity8 decimal null, CQuantity9 decimal null, CQuantity10 decimal null, CQuantity11 decimal null, CQuantity12 decimal null,
itogo decimal null, dall decimal null, perc real null)

select	r.name, isnull(RTRIM(r.razmer), '') razmer, r.cquantity1, r.cquantity2, r.cquantity3, r.cquantity4, r.cquantity5, r.cquantity6,
	r.cquantity7, r.cquantity8, r.cquantity9, r.cquantity10, r.cquantity11, r.cquantity12, isnull(r.itogo, 0), round(cast(isnull(r.dall, 0)as real), 2), round(r.itogo/i.itogo*100, 2)
from	#tmpresult r, #tmp_itogo i

как округлить до сотых round(r.itogo/i.itogo*100, 2)?
24 июн 09, 09:17    [7335895]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
покажите, пожалуйста, как это будет выглядеть кодом
24 июн 09, 09:18    [7335897]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
например
convert(decimal(10,2), r.itogo/i.itogo*100)
24 июн 09, 09:24    [7335913]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
Knyazev Alexey,

результат тот же остался -
8.9000000000000004
2.7400000000000002
3.5800000000000001
24 июн 09, 09:27    [7335922]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
yaros-hoi
Knyazev Alexey,

результат тот же остался -
8.9000000000000004
2.7400000000000002
3.5800000000000001


declare @r real, @i real
select @r=312423.12423, @i=23432.56757

select @r/@i*100, convert(decimal(10,2), @r/@i*100)
24 июн 09, 09:38    [7335942]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
Knyazev Alexey,

не помогло:(
24 июн 09, 10:53    [7336238]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36803
yaros-hoi
Knyazev Alexey,

не помогло:(
"Не помогло" - это так сервер писать стал вместо результатов запроса?
24 июн 09, 11:33    [7336474]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
Гавриленко Сергей Алексеевич,

8.9000000000000004
2.7400000000000002
3.5800000000000001

а нужно до сотых округлить
24 июн 09, 11:49    [7336610]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
Егоров Александр
Member

Откуда: Хабаровск
Сообщений: 517
yaros-hoi,

покажите тот селект, где вы сделали так, как вам советовал Гавриленко Сергей, а у вас не получилось?
24 июн 09, 11:51    [7336626]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
iljy
Guest
yaros-hoi,

сделайте
select r.itogo/i.itogo*100, convert(decimal(10,2), r.itogo/i.itogo*100)
from ....

и выдачу сюда
24 июн 09, 11:52    [7336631]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36803
yaros-hoi
Гавриленко Сергей Алексеевич,

8.9000000000000004
2.7400000000000002
3.5800000000000001

а нужно до сотых округлить


declare @r real, @i real
select @r=312423.12423456, @i=23432.56757456456

select @r/@i*100, convert(decimal(10,2), @r/@i*100)

------------- ---------------------------------------
1333,286      1333.29

(1 row(s) affected)

Что я не так делаю?
24 июн 09, 11:52    [7336633]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
Гавриленко Сергей Алексеевич,

@perc real

insert into #tmp_itogo(itogo )
select isnull(sum(cquantity1), 0)+isnull(sum(cquantity2), 0)+isnull(sum(cquantity3), 0)+isnull(sum(cquantity4), 0)+isnull(sum(cquantity5), 0)+
isnull(sum(cquantity6), 0)+isnull(sum(cquantity7), 0)+isnull(sum(cquantity8), 0)+isnull(sum(cquantity9), 0)+isnull(sum(cquantity10), 0)+
isnull(sum(cquantity11), 0)+isnull(sum(cquantity12), 0)
from	#tmpresult
where name  like  '%всего%'

select @perc=itogo from #tmp_itogo

select	r.name, isnull(RTRIM(r.razmer), '') razmer, r.cquantity1, r.cquantity2, r.cquantity3, r.cquantity4, r.cquantity5, r.cquantity6,
	r.cquantity7, r.cquantity8, r.cquantity9, r.cquantity10, r.cquantity11, r.cquantity12, isnull(r.itogo, 0), round(cast(isnull(r.dall, 0)as real), 2), convert(decimal(10,2), r.itogo/@perc*100)
from	#tmpresult r, #tmp_itogo i
24 июн 09, 12:11    [7336787]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
Glory
Member

Откуда:
Сообщений: 104760
round(cast(isnull(r.dall, 0)as real), 2),
Вы можете до посинения округлять тип real, но все равно у вас ничего не получится
Потому что это неточный тип данных
24 июн 09, 12:14    [7336811]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
iljy
Member

Откуда:
Сообщений: 8711
yaros-hoi,

сделайте
select	r.itogo/@perc*100, convert(decimal(10,2), r.itogo/@perc*100)
from	#tmpresult r, #tmp_itogo i

и пример выдачи приведите!
24 июн 09, 12:15    [7336821]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
yaros-hoi
Member

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

ну так как округлить тогда? реалом до посинения, а numeric и decimal - не помогут, покажут целое число
24 июн 09, 12:17    [7336832]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
Glory
Member

Откуда:
Сообщений: 104760
yaros-hoi
Glory,

ну так как округлить тогда? реалом до посинения, а numeric и decimal - не помогут, покажут целое число

Бред какой то. Откройте в хелпе описания типов данных и проичитайте про них
24 июн 09, 12:21    [7336868]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
yaros-hoi
Glory,

ну так как округлить тогда? реалом до посинения, а numeric и decimal - не помогут, покажут целое число
Если просто писать DECIMAL, то конечно.
Это же получается DECIMAL(18,0)
24 июн 09, 12:24    [7336886]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
iap,

написал так

perc decimal(5,2)
...
r.itogo/i.itogo*100


округлилось, но вот вместо ноля ничего нет
как сделать чтоб было 0.13, а не .13?
24 июн 09, 12:37    [7336997]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
Glory
Member

Откуда:
Сообщений: 104760
yaros-hoi

округлилось, но вот вместо ноля ничего нет
как сделать чтоб было 0.13, а не .13?

Программировать клинета своего
24 июн 09, 12:39    [7337012]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
yaros-hoi
чтоб было 0.13, а не .13?
Это отображение числа Вашим клиентским приложением,
к отображению сервер никакого отношения не имеет
24 июн 09, 12:40    [7337020]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
yaros-hoi
iap,

написал так

perc decimal(5,2)
...
r.itogo/i.itogo*100


округлилось, но вот вместо ноля ничего нет
как сделать чтоб было 0.13, а не .13?
Сделать где? Численно perc равен тому значению, которое было нужно?
Ну и всё. Больше от DECIMAL ничего требовать и нельзя.
Показываются обычно данные, преобразованные в текстовый формат (например, на клиенте).
Получается, у Вас уже другой вопрос: как преобразовать DECIMAL в строку желаемого вида?
24 июн 09, 12:42    [7337039]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
Паганель,

предлагаете ноль дописывать самому, делать проверку case' ом?
24 июн 09, 12:44    [7337049]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
yaros-hoi
Паганель,
предлагаете ноль дописывать самому, делать проверку case' ом?
Предлагаю задавать вопрос по отображению данных в Вашем клентском приложении
на форуме по тому языку программирования,
на котором написано Ваше клиентское приложение
24 июн 09, 12:49    [7337090]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
в query analyzer пока все написано, как в query analyzer это реализовать?
24 июн 09, 12:51    [7337112]     Ответить | Цитировать Сообщить модератору
 Re: round  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
yaros-hoi
в query analyzer пока все написано, как в query analyzer это реализовать?
Пользователю тоже в query analyzer работать прикажете?

Не ну конечно если задача в том, чтоб скидывать данные в файл строго определенного формата,
то присоединяюсь к вопросу iap (см. выше)
24 июн 09, 12:54    [7337128]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить