powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Копирование результата в эксель
20 сообщений из 20, страница 1 из 1
Копирование результата в эксель
    #39586815
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Написал SQL-запрос. Запустил запрос - выгружает так как надо.

Потом в области результата нажимаю "Выделить все" и "Скопировать с заголовками". Вставляю в эксель и превращаю в умную таблицу. Вместо значения "12.50" показывает дату. Если преобразовать эту дату, то показывает другое число.

Учитывая, что в запросе поле записано так
Код: sql
1.
CAST(Round(Таблица.Поле,2) AS NUMERIC (8,2)) AS [Поле]


Сначала округляет, потом срезает до сотых.

Почему так? Откуда это другое число? Или как правильно написать строку в запросе? Или надо по другому копировать?
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39586821
Massa52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,
Ищите на стороне Excel - вероятнее всего разделителем дробной части там запятая.
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39586844
ГуЗы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ferzmikk,
Перед вставкой в excel измените тип ячеек столбца на нужный. И все.
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39586852
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГуЗыferzmikk,
Перед вставкой в excel измените тип ячеек столбца на нужный. И все.
Но там, вместо "12.50" показывает "18 598,00"
Не могу понять откуда это число берется.
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39586853
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkГуЗыferzmikk,
Перед вставкой в excel измените тип ячеек столбца на нужный. И все.
Но там, вместо "12.50" показывает "18 598,00"
Не могу понять откуда это число берется.
Excel хранит даты в виде инта (количество дней, прошедших с 1900-01-01), 12.50 - 1950-12-01 -> 18596 дней. Что ты и получаешь, когда включаешь в столбце формат числа.

Менять формат столбца нужно ПЕРЕД вставкой данных.
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39586868
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан ДамировичМенять формат столбца нужно ПЕРЕД вставкой данных.Ну перед вставкой и менял формат колонки в экселе. Показывает "18 598,00"
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39586873
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkРуслан ДамировичМенять формат столбца нужно ПЕРЕД вставкой данных.Ну перед вставкой и менял формат колонки в экселе. Показывает "18 598,00"
У тебя в настройках чисел в WINDOWS стоит разделитель дробной части ","?
Либо смени разделитель, либо конвертируй в MONEY в SELECTе.
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39586928
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан ДамировичУ тебя в настройках чисел в WINDOWS стоит разделитель дробной части ","?А где именно находится это настройка?
Либо смени разделитель, либо конвертируй в MONEY в SELECTе.Значения нужны до сотых. Переводить, например, в рубли как то не логично получается.
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39587039
Massa52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

Control Panel\Clock, Language, and Region - тут задается формат.
12.50 для excel с вашей установко формата чисел в Windows должно быть 12,50
Поэтому excel пытается разобраться и как подсказали - конвертит его в дату.
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39587051
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot ferzmikk]Руслан ДамировичЛибо смени разделитель, либо конвертируй в MONEY в SELECTе.Значения нужны до сотых. Переводить, например, в рубли как то не логично получается.
Балбес, при чем здесь рубли?! Или тебя перевод смутил? Ну да, специальный синоним, который должен может использоваться для хранения денежных сумм.
Тестируй у себя преобразование данных:
Код: sql
1.
2.
3.
4.
5.
6.
7.
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 )


У меня вот
v1v2v3123.457123.4567123.46
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39587052
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если зайти в Язык и региональные стандарты - Настройка формата и в поле Разделить целой и дробной части указать не ",", а ".", то отображает так.
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39587068
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан Дамировичконвертируй в MONEY в SELECTе.Получилось, спасибо!
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39587099
tashkafox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ferzmikk,
Перед вставкой также можно выделить весь лист, установить тип данных на Текстовый вместо Общий, тогда всё вставится так, как отображается в SSMS (если лень заморачиваться с типами данных в запросе).
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39587151
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tashkafoxferzmikk,
Перед вставкой также можно выделить весь лист, установить тип данных на Текстовый вместо Общий, тогда всё вставится так, как отображается в SSMS (если лень заморачиваться с типами данных в запросе).Это, конечно, тоже нехорошо.
Твердят же всегда (и в этом форуме) - ячейки в экселе должны быть правильного типа.
Но увы, вот так оно работает :-(
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39587169
tashkafox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgТвердят же всегда (и в этом форуме) - ячейки в экселе должны быть правильного типа.
Если отправлять Эксель в виде отчета другим сотрудникам - это одно дело, а если во время самопроверки разработчик, решил перепроверить свои расчеты в Экселе - это другое.

А тонкости округлений и другие вопросы, связанными с типами данных (если на это был намек), нужно всегда держать в голове, а не только при вставке в Эксель.
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39587187
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk
Код: sql
1.
CAST(Round(Таблица.Поле,2) AS NUMERIC (8,2)) AS [Поле]


Код: sql
1.
CAST(Round(Таблица.Поле,2) AS MONEY) AS [Поле]


MONEY как влияет на время выполнения? Что то запрос намного дольше стал формироваться для 350 000 строк. В 13 из 48 полей используется такая запись. Более 30 мин. При NUMERIC намного быстрее формировался: 1,5 - 2 мин. Но пока не уверен, что из за MONEY.
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39587189
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tashkafoxА тонкости округлений и другие вопросы, связанными с типами данных (если на это был намек), нужно всегда держать в голове, а не только при вставке в Эксель.
А чтобы не держать - нужно уметь пользоваться внешними подключениями.
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39587268
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tashkafoxА тонкости округлений и другие вопросы, связанными с типами данных (если на это был намек), нужно всегда держать в голове, а не только при вставке в Эксель.Да какие "тонкости округлений"???

12.50 вставляет как Дек.50, ничего себе округление, я представляю, если бы SSMS так выводил результаты запросов для полей типа NUMERIC (8,2).

Выводи как число, не можешь, выводи как текст, как это до программиста не дошло???
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39587741
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkferzmikk
Код: sql
1.
CAST(Round(Таблица.Поле,2) AS NUMERIC (8,2)) AS [Поле]


Код: sql
1.
CAST(Round(Таблица.Поле,2) AS MONEY) AS [Поле]


MONEY как влияет на время выполнения? Что то запрос намного дольше стал формироваться для 350 000 строк. В 13 из 48 полей используется такая запись. Более 30 мин. При NUMERIC намного быстрее формировался: 1,5 - 2 мин. Но пока не уверен, что из за MONEY.
Все таки, MONEY увеличивает время выполнения?
...
Рейтинг: 0 / 0
Копирование результата в эксель
    #39587759
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkВсе таки, MONEY увеличивает время выполнения?Сам по себе нет, а почему изменилось время, можно посмотреть в плане выполнения, может, он поменялся из за CAST(... AS MONEY)
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Копирование результата в эксель
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]