2015-01-16 29 views
1

我有這個疑問wrtiien與PL/SQL編寫一個查詢,SQ SERVER

if l_rec.sched_interval_type = 'DAYS' then  
    if l_max_date is null then  
     if l_rec.DAY_START_DAY is not null then  
      SELECT next_day(p_date, l_rec.DAY_START_DAY)  
      INTO l_start_date  
      FROM dual;  
     else  
      l_start_date := TRUNC(p_date);  
     end if;  

我嘗試將其轉換爲SQL SERVER

set @NextDayID =(SELECT DAY_START_DAY FROM #l_rec) 
SELECT CASE WHEN sched_interval_type = 'DAYS' then   
     CASE WHEN @l_max_date is null then  
     CASE WHEN @NextDayID is not null then  
      @l_start_date = DATEADD(DAY, (DATEDIFF(DAY, ((@NextDayID + 5) % 7), GETDATE())/7) * 7 + 7, ((@NextDayID + 5) % 7)) 
     else  
      @l_start_date =CONVERT(DATETIME, CONVERT(DATE, @p_date))  
     end 

我得到了很多的錯誤,如何改正他們?

+0

後的錯誤。 – SouravA

+0

如果你打算做很多這種類型的轉換,這本書是非常寶貴的:http://www.amazon.com/SQL-Nutshell-In-OReilly-ebook/dp/B008IGK7JM/ref=pd_sim_kstore_94?ie= UTF8&refRID = 0BC0484M5ZGPTHCG2916 – HLGEM

回答

0

試試這個:

DECLARE @NextDayID INT 
SELECT @NextDayID = DAY_START_DAY FROM #l_rec 

SELECT @l_start_date CASE WHEN sched_interval_type = 'DAYS' and @l_max_date is null and @NextDayID is not null then  
DATEADD(DAY, (DATEDIFF(DAY, ((@NextDayID + 5) % 7), GETDATE())/7) * 7 + 7, ((@NextDayID + 5) % 7)) 
      else CONVERT(DATETIME, CONVERT(DATE, @p_date)) end as [start_date] 
      from <<someTableName>> --<<--Replace the tag with the table whihc has the column `sched_interval_type`