Преобразование Oracle в SQLServer - PullRequest
0 голосов
/ 05 ноября 2010

У меня есть следующий запрос в Oracle, поэтому я не знаю, как преобразовать в SQL Server.

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 Ответ

1 голос
/ 05 ноября 2010

Посмотрите на использование

DATEPART для проверки дня месяца (используйте d или dd)

и

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

на дату

и

DATEADD для добавления даты используйте DATEADD (datepart ,number,date )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...