Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
ferzmikk Member Откуда: Сообщений: 2213 |
Здравствуйте! Есть рабочий SQL-запрос, который вначале удаляет все строки в таблице в базе данных, потом выгружает данные за январь 2014 г., далее заносит полученные строки в таблицу базы данных.
Специально в SQL-запросе используется Openrowset с MDX-запросом. Сразу за 2014-2017 гг не выгружаются данные. Учитывая, что если выгружать за январь 2014 года с нулевыми датами (если в MDX-запросе убрать NON EMPTY), то данные не выгрузятся. Также не обращайте внимание, что поля на русском языке. |
|
22 мар 18, 08:29 [21276155] Ответить | Цитировать Сообщить модератору |
Дедушка Member Откуда: Город трёх революций Сообщений: 5114 |
формировать строку запроса динамикой, выполнять в цикле. |
22 мар 18, 10:01 [21276320] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
ferzmikk,DECLARE @DT DATE = '2014-01-01' WHILE @DT <= '2017-12-01' BEGIN PRINT @DT -- put your dynamic query here SET @DT = DATEADD(MONTH, 1, @DT) END |
22 мар 18, 21:20 [21278911] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
Mind, Дата находится в MDX-запросе внутри SQL-запроса и указывается в таком формате [Время].[Месяц].&[2014-01-01T00:00:00]. Получается дату вставлять надо примерно так '[Время].[Месяц].&[' + Год() + '-' + Месяц() + '-01T00:00:00]' Причем номер месяца, например, январь, должен отображаться не как '1', а как '01'. Получился такой запрос, но в номере месяца до октября отсутствует нужный ноль . DECLARE @DT DATE = '2014-01-01' WHILE @DT <= '2017-12-01' BEGIN PRINT '[Время].[Год].&[' + CONVERT(nvarchar(10),YEAR(@DT),4 ) + '-' + convert(nvarchar(10),MONTH(@DT),02 ) + '-01T00:00:00]' SET @DT = DATEADD(MONTH, 1, @DT) END Как правильно написать? |
23 мар 18, 09:13 [21279473] Ответить | Цитировать Сообщить модератору |
кролик-зануда
Guest |
ferzmikk,right('00'+cast(MONTH(@DT) as varchar),2) |
23 мар 18, 09:20 [21279501] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
кролик-зануда, Получилось, спасибо! |
23 мар 18, 10:35 [21279807] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
Вставляю условие в основной код и показывает ошибку. Что тут не так? К сообщению приложен файл. Размер - 20Kb |
23 мар 18, 10:48 [21279867] Ответить | Цитировать Сообщить модератору |
Шыфл Member Откуда: Прага Сообщений: 776 |
ferzmikk,DECLARE @DT DATE = '2014-01-01' WHILE @DT <= '2017-12-01' BEGIN PRINT '[Время].[Год].&[' + CONVERT(nvarchar(10),YEAR(@DT),4 ) + '-' + right('00'+convert(nvarchar(10),MONTH(@DT),02 ),2) + '-01T00:00:00]' SET @DT = DATEADD(MONTH, 1, @DT) END |
23 мар 18, 12:18 [21280278] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
В общем весь запрос
Выдает ошибку Сообщение 102, уровень 15, состояние 1, строка 43 Неправильный синтаксис около конструкции "+"." |
|||
23 мар 18, 13:12 [21280513] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
ferzmikk, запрос в переменну, потом в OPENROWSET |
23 мар 18, 13:18 [21280557] Ответить | Цитировать Сообщить модератору |
Maxx Member [скрыт] Откуда: Сообщений: 24290 |
([Время].[Год].&[' + CONVERT(nvarchar(10),YEAR(@DT),4 ) + '-' + right('00'+cast(MONTH(@DT) as [b]nvarchar[/b]),2) + '-01T00:00:00], бо похоже что у вас в итоге абракадарба а не мдикс |
23 мар 18, 13:26 [21280597] Ответить | Цитировать Сообщить модератору |
Maxx Member [скрыт] Откуда: Сообщений: 24290 |
приведите все к типу nvarchar я хотел сказать:) |
||
23 мар 18, 13:34 [21280651] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
([Время].[Год].&[' + CONVERT(nvarchar(4),YEAR(@DT) ) + '-' + right('00'+CONVERT(nvarchar(2),MONTH(@DT)),2) + '-01T00:00:00], |
||
23 мар 18, 13:37 [21280675] Ответить | Цитировать Сообщить модератору |
Maxx Member [скрыт] Откуда: Сообщений: 24290 |
ferzmikk, в итоге работает нет ? |
23 мар 18, 13:51 [21280751] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
также |
||
23 мар 18, 13:55 [21280768] Ответить | Цитировать Сообщить модератору |
Maxx Member [скрыт] Откуда: Сообщений: 24290 |
весь оперроусет в строку и выведите принтом. Чудес не бывает |
23 мар 18, 14:08 [21280821] Ответить | Цитировать Сообщить модератору |
Maxx Member [скрыт] Откуда: Сообщений: 24290 |
нет еснно не бывет ![]() OPENROWSET does not accept variables for its arguments. |
||
23 мар 18, 14:18 [21280867] Ответить | Цитировать Сообщить модератору |
Руслан Дамирович Member Откуда: Резиновая нерезиновая Сообщений: 942 |
|
|
23 мар 18, 15:49 [21281246] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
При запуске пишет Ошибка при преобразовании типа данных nvarchar к numeric.. Это все из за поля [Реализация сумма без НДС]. К сообщению приложен файл. Размер - 60Kb |
24 мар 18, 10:57 [21282671] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
К сообщению приложен файл. Размер - 14Kb |
24 мар 18, 10:58 [21282674] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
Почему пишет Numeric, если задан decimal(18,2)? Как исправить? |
24 мар 18, 11:00 [21282676] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31817 |
|
||
24 мар 18, 12:01 [21282746] Ответить | Цитировать Сообщить модератору |
ferzmikk Member Откуда: Сообщений: 2213 |
И как быть теперь? |
||||
24 мар 18, 13:13 [21282855] Ответить | Цитировать Сообщить модератору |
Дедушка Member Откуда: Город трёх революций Сообщений: 5114 |
ferzmikk, что вам это нумерик если у вас проблема с варчаром? посмотрите, что вам возвращает в этом поле ваш запрос без конвертации (может у вас там разделитель дробной части не тот). |
24 мар 18, 13:20 [21282866] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31817 |
Вы спросили, почему ошибка с DECIMAL, а сервер пишет про NUMERIC? Я вам ответил - это нормально, это описано в документации, и ничего страшного в этом нет, просто забейте. Лучше разбирайтесь с самой ошибкой. |
||||
24 мар 18, 14:42 [21282993] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |