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

Откуда:
Сообщений: 271
Доброе утро форумчане
Создал тему по вопросу срезания чисел с дробной частью в представлении в ssms. sql server линкуется к бд access, поэтому модератор переместил тему в раздел access, хотя по этой части вопросов нет
Может кто из знатоков подскажет, почему представление в ssms режет числа с дробной частью (через запятую), но при этом выгрузки в ексель, который подключен к этому представлению, происходят правильно?
28 янв 15, 09:46    [17180747]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
Glory
Member

Откуда:
Сообщений: 104751
Сервер ничего не режет
Режет как всегда написанный лично вами код
28 янв 15, 09:47    [17180751]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
смотрю_тут
Member

Откуда:
Сообщений: 1368
Glory
Сервер ничего не режет
Режет как всегда написанный лично вами код

не всегда, не только код.
иногда настройки драйверов , провайдера.
28 янв 15, 09:51    [17180768]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
Glory
Member

Откуда:
Сообщений: 104751
смотрю_тут
не всегда, не только код.
иногда настройки драйверов , провайдера.

А драйвер == сервер ?
28 янв 15, 09:52    [17180774]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
вот само представление

SELECT  convert(nvarchar(10),p.[Дата],(104))as'Дата',day(p.[Дата]) as'День',r.РУ , p.[id_Отдел] as'Отдел',c.Ц as'ЦО', t.[Вид], isnull(t.[Сумма],0) as'Платежи' 
FROM [Access_BD]...[Платежи_]  p
CROSS APPLY (
     VALUES      
           ([1-КАРТА_],'1-КАРТА')
          ,([2-КАРТА],'2-КАРТА')
          ,([3-КАРТА],'3-КАРТА')
        
) t([Сумма],[Вид])
LEFT JOIN [Access_BD]...[Отдел] c on c.Код=p.id_Отдел
INNER JOIN [Access_BD]...[РУ] r on r.Код=c.id_РУ
 WHERE 
 month(p.[Дата]) = month(GETDATE()-1) -- p.[Дата] = '20150121'
 and t.[Сумма] is not null 
28 янв 15, 10:39    [17181086]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
последнее условие and t.[Сумма] is not null было закоментено.
28 янв 15, 10:41    [17181104]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
Nicks
Member

Откуда:
Сообщений: 124
Такая же проблема.
Точнее коннектимся к Oracle из SQL Server через линк.
Из двух разных SQLServer-баз под одним логином к Oracle выдает разные данные:
Запрос такой:
select * from openquery(OracleLink1, 'Select 10/3 from dual')


На SQLServer -1:
3
На SQLServer -2:
3.33333333333333333333333333333333333333.

Галочка у провайдера Allow inprocess стоит у обоих серверов. Пробовал менять на SQLServer-1 не помогает.

Причем началось все на SQLServer-1 на этой неделе.
28 янв 15, 11:03    [17181256]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
Nicks
Member

Откуда:
Сообщений: 124
Вопрос (к предыдущему посту): куда копать, как можно исправить это?))
28 янв 15, 11:04    [17181264]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
Glory
Member

Откуда:
Сообщений: 104751
2viper2viper
вот само представление

И вы уже поинтересовались, какие типы у ваших полей в [Access_BD]...[Платежи_] видит SQL Server ?
28 янв 15, 11:13    [17181316]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
aleks2
Guest
Nicks
Такая же проблема.
Точнее коннектимся к Oracle из SQL Server через линк.
Из двух разных SQLServer-баз под одним логином к Oracle выдает разные данные:
Запрос такой:
select * from openquery(OracleLink1, 'Select 10/3 from dual')


На SQLServer -1:
3
На SQLServer -2:
3.33333333333333333333333333333333333333.

Галочка у провайдера Allow inprocess стоит у обоих серверов. Пробовал менять на SQLServer-1 не помогает.

Причем началось все на SQLServer-1 на этой неделе.

Ну напишите же
Select 10./3.
не мучайте животное.
28 янв 15, 11:44    [17181634]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Glory
2viper2viper
вот само представление

И вы уже поинтересовались, какие типы у ваших полей в [Access_BD]...[Платежи_] видит SQL Server ?


Glory, вы правы! real
представление создавалось этим запросом
+
USE Reports
go
CREATE VIEW PAYMENTOO AS
(SELECT  convert(nvarchar(10),p.[Дата],(104))as'Дата',day(p.[Дата]) as'День',r.РУ , p.[id_Отдел] as'Отдел',c.Ц as'ЦО', t.[Вид], isnull(t.[Сумма],0) as'Платежи' 
FROM [Access_BD]...[Платежи_]  p
CROSS APPLY (
     VALUES      
           ([1-КАРТА_],'1-КАРТА')
          ,([2-КАРТА],'2-КАРТА')
          ,([3-КАРТА],'3-КАРТА')
        
) t([Сумма],[Вид])
LEFT JOIN [Access_BD]...[Отдел] c on c.Код=p.id_Отдел
INNER JOIN [Access_BD]...[РУ] r on r.Код=c.id_РУ
 WHERE 
 month(p.[Дата]) = month(GETDATE()-1) -- p.[Дата] = '20150121'
 --and t.[Сумма] is not null 
)
GO


а как создать представление с заранее указанным типом данных? в access - "Одинарное с плавающей точкой"
28 янв 15, 12:12    [17181972]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
money,
Guest
2viper2viper
в access - "Одинарное с плавающей точкой"
это ты суммы (в смысле "бабло") храниш в "Одинарное с плавающей точкой" ?! ... сколько тебя ещё ждёт "приключений" с таким "выбором" :)

меняй в Аксе на money или decimal нужной точности
28 янв 15, 12:22    [17182063]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
Glory
Member

Откуда:
Сообщений: 104751
2viper2viper
а как создать представление с заранее указанным типом данных?

Наверное надо указывать этот тип данных.
Не силой же мысли сервер узнает, к какому типу он должен преобразовать ваше "Одинарное с плавающей точкой"
28 янв 15, 12:30    [17182142]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
money, на numeric перевел. пересоздал представление.
Спасибо Большое всем за помощь

ПС, а все таки, как можно было бы в самом представлении указать преобразование в numeric? использовать cast здесь:
ROSS APPLY (
     VALUES      
           (cast([1-КАРТА_] as numeric (18,2)),'1-КАРТА')
?
28 янв 15, 13:06    [17182466]     Ответить | Цитировать Сообщить модератору
 Re: представление режет чисела с дробной частью  [new]
Glory
Member

Откуда:
Сообщений: 104751
2viper2viper
а все таки, как можно было бы в самом представлении указать преобразование в numeric? использовать cast здесь:

Что мешает попробовать и узнать ответ из первых рук ?
28 янв 15, 13:11    [17182520]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить