Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
ferzmikk Member Откуда: Сообщений: 2213 |
Здравствуйте! Написал SQL-запрос. Запустил запрос - выгружает так как надо. Потом в области результата нажимаю "Выделить все" и "Скопировать с заголовками". Вставляю в эксель и превращаю в умную таблицу. Вместо значения "12.50" показывает дату. Если преобразовать эту дату, то показывает другое число. Учитывая, что в запросе поле записано так CAST(Round(Таблица.Поле,2) AS NUMERIC (8,2)) AS [Поле] Сначала округляет, потом срезает до сотых. Почему так? Откуда это другое число? Или как правильно написать строку в запросе? Или надо по другому копировать? К сообщению приложен файл. Размер - 15Kb |
19 янв 18, 08:47 [21118669] Ответить | Цитировать Сообщить модератору |
Massa52 Member Откуда: Сообщений: 382 |
ferzmikk, Ищите на стороне Excel - вероятнее всего разделителем дробной части там запятая. |
19 янв 18, 08:56 [21118685] Ответить | Цитировать Сообщить модератору |
ГуЗы
Guest |
ferzmikk, Перед вставкой в excel измените тип ячеек столбца на нужный. И все. |
19 янв 18, 09:37 [21118791] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
Но там, вместо "12.50" показывает "18 598,00" Не могу понять откуда это число берется. |
||
19 янв 18, 09:45 [21118825] Ответить | Цитировать Сообщить модератору |
Руслан Дамирович Member Откуда: Резиновая нерезиновая Сообщений: 942 |
Excel хранит даты в виде инта (количество дней, прошедших с 1900-01-01), 12.50 - 1950-12-01 -> 18596 дней. Что ты и получаешь, когда включаешь в столбце формат числа. Менять формат столбца нужно ПЕРЕД вставкой данных. |
||||
19 янв 18, 09:48 [21118836] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
|
||
19 янв 18, 10:00 [21118906] Ответить | Цитировать Сообщить модератору |
Руслан Дамирович Member Откуда: Резиновая нерезиновая Сообщений: 942 |
У тебя в настройках чисел в WINDOWS стоит разделитель дробной части ","? Либо смени разделитель, либо конвертируй в MONEY в SELECTе. |
||||
19 янв 18, 10:05 [21118942] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
|
||||
19 янв 18, 11:16 [21119309] Ответить | Цитировать Сообщить модератору |
Massa52 Member Откуда: Сообщений: 382 |
ferzmikk, Control Panel\Clock, Language, and Region - тут задается формат. 12.50 для excel с вашей установко формата чисел в Windows должно быть 12,50 Поэтому excel пытается разобраться и как подсказали - конвертит его в дату. |
19 янв 18, 13:19 [21119953] Ответить | Цитировать Сообщить модератору |
Руслан Дамирович Member Откуда: Резиновая нерезиновая Сообщений: 942 |
[quot ferzmikk]
Балбес, при чем здесь рубли?! Или тебя перевод смутил? Ну да, специальный синоним, который Тестируй у себя преобразование данных: DECLARE @v1 FLOAT = 123.4567 DECLARE @v2 NUMERIC(19,4) = 123.4567 DECLARE @v3 MONEY = 123.4567 SELECT [v1] = CONVERT( VARCHAR(30), @v1 ), [v2] = CONVERT( VARCHAR(30), @v2 ), [v3] = CONVERT( VARCHAR(30), @v3 ) У меня вот
|
|||||||||||
19 янв 18, 13:33 [21120042] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
Если зайти в Язык и региональные стандарты - Настройка формата и в поле Разделить целой и дробной части указать не ",", а ".", то отображает так. К сообщению приложен файл. Размер - 4Kb |
19 янв 18, 13:33 [21120044] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
|
||
19 янв 18, 13:45 [21120119] Ответить | Цитировать Сообщить модератору |
tashkafox Member Откуда: Москва Сообщений: 106 |
ferzmikk, Перед вставкой также можно выделить весь лист, установить тип данных на Текстовый вместо Общий, тогда всё вставится так, как отображается в SSMS (если лень заморачиваться с типами данных в запросе). |
19 янв 18, 14:20 [21120334] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31817 |
Твердят же всегда (и в этом форуме) - ячейки в экселе должны быть правильного типа. Но увы, вот так оно работает :-( |
||
19 янв 18, 15:12 [21120625] Ответить | Цитировать Сообщить модератору |
tashkafox Member Откуда: Москва Сообщений: 106 |
Если отправлять Эксель в виде отчета другим сотрудникам - это одно дело, а если во время самопроверки разработчик, решил перепроверить свои расчеты в Экселе - это другое. А тонкости округлений и другие вопросы, связанными с типами данных (если на это был намек), нужно всегда держать в голове, а не только при вставке в Эксель. |
||
19 янв 18, 15:29 [21120721] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
CAST(Round(Таблица.Поле,2) AS MONEY) AS [Поле] MONEY как влияет на время выполнения? Что то запрос намного дольше стал формироваться для 350 000 строк. В 13 из 48 полей используется такая запись. Более 30 мин. При NUMERIC намного быстрее формировался: 1,5 - 2 мин. Но пока не уверен, что из за MONEY. |
||
19 янв 18, 15:44 [21120802] Ответить | Цитировать Сообщить модератору |
Руслан Дамирович Member Откуда: Резиновая нерезиновая Сообщений: 942 |
А чтобы не держать - нужно уметь пользоваться внешними подключениями. К сообщению приложен файл. Размер - 4Kb |
||
19 янв 18, 15:46 [21120807] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31817 |
12.50 вставляет как Дек.50, ничего себе округление, я представляю, если бы SSMS так выводил результаты запросов для полей типа NUMERIC (8,2). Выводи как число, не можешь, выводи как текст, как это до программиста не дошло??? |
||
19 янв 18, 17:10 [21121157] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
Все таки, MONEY увеличивает время выполнения? |
||||
21 янв 18, 10:04 [21124025] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31817 |
|
||
21 янв 18, 10:48 [21124076] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |