【问题标题】:How can I convert Oracle round statement to SQL server syntax?如何将 Oracle 循环语句转换为 SQL Server 语法?
【发布时间】:2013-04-19 21:12:00
【问题描述】:

如何转换:

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

到 SQL 服务器语法?

【问题讨论】:

  • 我可能是错的,但由于 SQL Server 也有一个 ROUND 函数,我怀疑你遇到的真正问题是转换 DECODE,而不是 ROUND,这个问题有 @987654321 @.

标签: oracle sql-server-2008


【解决方案1】:

除非我误解了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和 Oracle。

【讨论】:

    【解决方案2】:

    您可以使用简单的 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 )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      相关资源
      最近更新 更多