Mohammad Azeem Ответов: 1

Требуется преобразование запросов Oracle в SQL


Дорогие Все,

Мне нужен следующий код только условие while для преобразования в SQL запрос так как в настоящее время этот запрос отлично работает с моей базой данных orcle но я не могу запустить его в SQL server

declare @ed varchar(30)='20-NOV-2018'
SELECT me_rpt_monthend_samplecount.HED,   
         me_rpt_monthend_samplecount.HED_DESCR,   
         me_rpt_monthend_samplecount.DESCR,   
         me_rpt_monthend_samplecount.EM_MON_CNT,   
         me_rpt_monthend_samplecount.BP_MON_CNT,   
         me_rpt_monthend_samplecount.ET_MON_CNT,   
         me_rpt_monthend_samplecount.EM_YR_CNT,   
         me_rpt_monthend_samplecount.BP_YR_CNT,   
         me_rpt_monthend_samplecount.ET_YR_CNT  
    FROM me_rpt_monthend_samplecount  
   WHERE ( "ME_RPT_MONTHEND_SAMPLECOUNT"."RECD_DATE" >= TO_DATE(CONCAT(CONCAT('01-JAN-',TO_CHAR(TO_DATE(@ed,'DD-Mon-YYYY'),'YYYY')),  '00:00:00'), 'DD-MON-YYYY HH24:MI:SS' ) ) AND  
         ( "ME_RPT_MONTHEND_SAMPLECOUNT"."RECD_DATE" <= LAST_DAY(TO_DATE(CONCAT(@ed, '23:59:59'),'DD-Mon-YYYY HH24:MI:SS')) )    


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

перепробовал много разных техник но не получил точного ответа

1 Ответов

Рейтинг:
0

CHill60

Очень трудно помочь людям, которые не дают достаточной информации - как мы можем точно сказать, что вы пробовали, или в чем заключается фактическая проблема (то есть сообщение об ошибке). Помогите нам помочь вам и читать Некоторые рекомендации по размещению вопросов на форумах[^]

Похоже, что вы сравниваете RECD_DATE с началом и концом месяца даты в @ed в этом случае это должно сработать:

declare @ed datetime ='20-NOV-2018'
SELECT a.HED,   
         a.HED_DESCR,   
         a.DESCR,   
         a.EM_MON_CNT,   
         a.BP_MON_CNT,   
         a.ET_MON_CNT,   
         a.EM_YR_CNT,   
         a.BP_YR_CNT,   
         a.ET_YR_CNT  
    FROM me_rpt_monthend_samplecount  a
   WHERE a.RECD_DATE BETWEEN dateadd(mm, datediff(mm, 0, @ed), 0) AND  dateadd(dd, -1, dateadd(mm, datediff(mm, 0, @ed) + 1, 0))

ЗАПИСКА...
- что я изменил тип своего тела. @ed к datetime. Date это тоже сработало бы. Всегда используйте правильный тип для столбцов и переменных.
- что я дал таблице псевдоним вместо того, чтобы печатать me_rpt_monthend_samplecount весь тип
- использование МЕЖДУ [^]
- что я получил функции даты от Некоторые Распространенные Процедуры Даты - SQLServerCentral[^]. Если я неверно истолковал ваши намерения, то вы можете использовать функции, которые вы найдете там, чтобы настроить WHERE пункт