Mohammad Azeem Ответов: 1

Проблема Sql - запроса при подключении из oracle в синтаксис SQL


Всем Привет,

Я запускал следующий запрос в Oracle абсолютно нормально но после преобразования в SQL он выдает следующую ошибку:

SELECT RECD_DATE, 'C' AS HED, 'SAMPLE PASSING TIME (PERCENTAGE)' AS HED_DESCR, 'AVG MIN' AS SUB_HED, DESCR, ((AVG(EM_MON_CNT)*86400)/60) AS EM_MON_CNT, 
((AVG(BP_MON_CNT)*86400)/60) AS BP_MON_CNT, ((AVG(ET_MON_CNT)*86400)/60) AS ET_MON_CNT,
((AVG(EM_YR_CNT)*86400)/60) AS EM_YR_CNT, ((AVG(BP_YR_CNT)*86400)/60) AS BP_YR_CNT, ((AVG(ET_YR_CNT)*86400)/60) AS ET_YR_CNT FROM (
select RECD_DATE, 'AVG MIN' AS SUB_HED, 'BLENDS' AS DESCR, customer_id, AVG(DATEDIFF(day,DATE_COMPLETED,RECD_DATE)) AS EM_MON_CNT, 0 AS BP_MON_CNT, 0 AS ET_MON_CNT



Ошибка заключается в следующем:
Msg 257, Level 16, State 3, Line 1
Implicit conversion from data type datetime to int is not allowed. Use the CONVERT function to run this query.


Может ли кто-нибудь, пожалуйста, помочь

Что я уже пробовал:

Oracle в SQL ,
Msg 257, Level 16, State 3, Line 1
Implicit conversion from data type datetime to int is not allowed. Use the CONVERT function to run this query.

RickZeeland

Попробуйте разделить все эти запросы, чтобы увидеть, какой из них вызывает проблему.

Mohammad Azeem

спасибо Рику, я разобрался с этим, но получил последний вопрос, который заключается в том, что у меня есть следующий код, работающий в oracle, но совсем не в SQL server.

ВЫБЕРИТЕ SUBSTR(TO_CHAR(RECD_DATE,'HH24:MI:SS'),1,2)||'-'||TRIM(TO_CHAR((TO_NUMBER(SUBSTR(TO_CHAR(RECD_DATE,'HH24:MI:SS'),1,2))+1),'00')) КАК HED, SAMPLE_TYPE, CUSTOMER_ID, RECD_DATE,COUNT(ID_TEXT) КАК CNT ИЗ ОБРАЗЦА
Где STATUS<>'X' и SAMPLE_TYPE<>' '
ГРУППА ПО RECD_DATE,CUSTOMER_ID,SAMPLE_TYPE ;

Давая следующее сообщение об ошибке:
"TO_CHAR"-это не распознанное имя встроенной функции.

Итак, как я могу лучше всего преобразовать эту строку в SQL-запрос, специфичный для вышеприведенного запроса.

ВЫБЕРИТЕ SUBSTR(TO_CHAR(RECD_DATE,'HH24:MI:SS'),1,2)||'-'||TRIM(TO_CHAR((TO_NUMBER(SUBSTR(TO_CHAR(RECD_DATE,'HH24:MI:SS'),1,2))+1),'00')) КАК ХЕД,

1 Ответов

Рейтинг:
1

RickZeeland

Я отвечаю на ваш последний комментарий я использовал этот онлайн конвертер SQLines - онлайн преобразование SQL[^]
по запросу Оракула:

SELECT SUBSTR(TO_CHAR(RECD_DATE,'HH24:MI:SS'),1,2)||'-'||TRIM(TO_CHAR((TO_NUMBER(SUBSTR(TO_CHAR(RECD_DATE,'HH24:MI:SS'),1,2))+1),'00')) AS HED, SAMPLE_TYPE, CUSTOMER_ID, RECD_DATE,COUNT(ID_TEXT) AS CNT FROM SAMPLE 
WHERE STATUS<>'X' AND SAMPLE_TYPE<>' ' 
GROUP BY RECD_DATE,CUSTOMER_ID,SAMPLE_TYPE ;
И получил вот это:
SELECT ISNULL(SUBSTRING(CONVERT(VARCHAR(8), RECD_DATE,108),1,2), '')+'-'+
ISNULL(RTRIM(LTRIM(TO_CHAR((TRY_CAST(SUBSTRING(CONVERT(VARCHAR(8), RECD_DATE,108),1,2) AS int)+1),'00'))), '') AS HED, 
SAMPLE_TYPE, CUSTOMER_ID, RECD_DATE,COUNT(ID_TEXT) 
AS CNT FROM SAMPLE 
WHERE STATUS<>'X' AND SAMPLE_TYPE<>' ' 
GROUP BY RECD_DATE,CUSTOMER_ID,SAMPLE_TYPE ;


Mohammad Azeem

Привет, Рик, к сожалению, это не переводится to_number в эквивалент sql

RickZeeland

Я заменил его на TRY_CAST() смотрите: https://docs.microsoft.com/en-us/sql/t-sql/functions/try-cast-transact-sql?view=sql-server-2017