2010-11-05 66 views
0

我在oracle中有以下查詢,所以不知道如何轉換成SQL Server。Oracle到SQLServer轉換

WITH start_date  AS 
(
     SELECT TO_DATE ('01-Jan-2010' 
         , 'DD-Mon-YYYY' 
         )  AS start_date 
     FROM dual 
) 
SELECT m.task_name 
,   COUNT (CASE WHEN TO_CHAR (d.task_date, 'DD') = '01' THEN 1 END)  AS Day_1 
,   COUNT (CASE WHEN TO_CHAR (d.task_date, 'DD') = '02' THEN 1 END)  AS Day_2 
,   COUNT (CASE WHEN TO_CHAR (d.task_date, 'DD') = '03' THEN 1 END)  AS Day_3 
... 
,   COUNT (CASE WHEN TO_CHAR (d.task_date, 'DD') = '31' THEN 1 END)  AS Day_31 
FROM  task_master m 
JOIN  task_detail d  ON  m.task_id  = d.task_id 
JOIN  start_date s  ON  d.task_date  >=   s.start_date 
           AND  d.task_date  < ADD_MONTHS (s.start_date, 1) 
GROUP BY m.task_name 
; 
+1

Oracle到oracle?還是到SqlServer? – 2010-11-05 11:11:17

+0

需要轉換成SQLServer – user239684 2010-11-05 11:14:53

回答

1

看一看使用

DATEPART檢查月份的一天(使用d或DD)

CONVERT(DATETIME,'01-Jan-2010') 

的日期

DATEADD添加日期使用DATEADD (datepart ,number,date)