2013-04-25 89 views
0

我如何轉換:如何將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

回答

0

除非我誤解了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 甲骨文工作。

0

你可以使用簡單的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)