2014-10-14 5 views
0

Этот код работает в Oracle, но он не работает на SQL-сервере. Я совершенно новый для SQL-сервера, и я не уверен, какой правильный способ исправить это.Oracle to SQL Server (преобразование из символьной строки)

SELECT CASE GROUPING(HireDate) 
     when 0 then HireDate 
     else 'TOTAL' 
    end HireDate, 
    count(HireDate) as count_hire_date 
FROM Faculty 
GROUP BY ROLLUP(HireDate); 

Попытка получить что-то вроде этого:

hire_date count_hire_date 
1995  10 
1996  20 
1997  30 
TOTAL  60 

ли я использовать какой-то актерский в сервере SQL или что я пишу, чтобы исправить эту ошибку синтаксиса и заставить это работать в SQL Server?

ответ

1

Я думаю, ваша проблема заключается в выражении дела и ROLLUP, это должно быть так:

SELECT (CASE when GROUPING(HireDate) = 0 then CONVERT(varchar(50),HireDate) else 'TOTAL' end) HireDate, 
    count(HireDate) as count_hire_date 
    FROM Faculty 
    GROUP BY HireDate WITH ROLLUP 

и, пожалуйста, обратитесь к этой ссылке: http://msdn.microsoft.com/en-us/library/ms178544.aspx

+0

Это все еще дает мне ошибку синтаксиса. Поддерживаю ли я конец в случае с SQL Server? – MrPickle5

+0

Я все еще получаю «Ошибка конверсии при преобразовании даты и/или времени из символьной строки.». :( – MrPickle5

+0

Пожалуйста, проверьте мои изменения :) –

Смежные вопросы