如何将Oracle round语句转换为SQL Server语法?

问题描述:

我如何转换:如何将Oracle round语句转换为SQL Server语法?

round(DECODE(PC_TTL.WAGETYPE, 3085, PC_TTL.WORKHOURS, DECODE(PC_TTL.UNIT, '010', PC_TTL.WORKHOURS/8, PC_TTL.WORKHOURS)) , 2)

到SQL服务器的语法?

+0

我可能是错的,但由于SQL Server还拥有'ROUND'功能我怀疑你有真正的问题是转换'DECODE',不'ROUND',并认为这一问题已[已回答](http://stackoverflow.com/questions/1559241/decode-function-in-sql-server)。 – Pondlife 2013-04-25 20:36:05

除非我误解了DECODE逻辑,这应该做的伎俩:

ROUND(
    CASE WHEN PC_TTL.WAGETYPE = 3085 THEN PC_TTL.WORKHOURS 
    ELSE 
    CASE WHEN PC_TTL.UNIT = '010' THEN PC_TTL.WORKHOURS/8 
    ELSE PC_TTL.WORKHOURS 
    END 
    END, 2) 

这将在SQL Server 甲骨文工作。

你可以使用简单的case语句来做到这一点。

ROUND (
CASE 
    WHEN PC_TTL.WAGETYPE = 3085 THEN PC_TTL.WORKHOURS 
    WHEN PC_TTL.UNIT  = '010' THEN PC_TTL.WORKHOURS/8 
    ELSE PC_TTL.WORKHOURS 
END, 2)