如何将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服务器的语法?
答
除非我误解了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)
我可能是错的,但由于SQL Server还拥有'ROUND'功能我怀疑你有真正的问题是转换'DECODE',不'ROUND',并认为这一问题已[已回答](http://stackoverflow.com/questions/1559241/decode-function-in-sql-server)。 – Pondlife 2013-04-25 20:36:05