我如何轉換:如何將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服務器的語法?
我如何轉換:如何將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