Oracle到SQL Server(从字符串转换)

Oracle到SQL Server(从字符串转换),sql,sql-server,Sql,Sql Server,这段代码在Oracle中有效,但在SQL server中失败。我是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); 试图得到这

这段代码在Oracle中有效,但在SQL server中失败。我是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 server中使用某种类型的强制转换,或者写些什么来修复此语法错误并使其在SQL server中工作?

我认为您的问题在于case expression和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

请参考此链接:

,它仍然会给我一个语法错误。我是否使用SQL Server在case语句中保留结尾?当从字符串转换日期和/或时间时,我仍然得到
转换失败。
错误:(请尝试此操作:选择(分组时的大小写(HireDate)=0,然后转换(varchar(50),HireDate)或其他“总计”结束)HireDate,计数(HireDate)作为教员组中的count_HireDate_日期,并进行汇总