TRUNC(从Oracle到T-Sql Server的案例)

TRUNC(从Oracle到T-Sql Server的案例),sql,oracle,case,Sql,Oracle,Case,嘿,我一直在尝试将一个数据库从Oracle转换为Sql Server格式,这是我遇到的一个问题,在此我将非常感谢您的帮助 甲骨文行: TRUNC(CASE WHEN (b.rsn IS NOT NULL OR A.zeroreport = 1) AND b.datereceived IS NULL THEN A.datereceived ELSE b.datereceived END), 我一直在尝试将其转换为SQl Server,到目前为止,我得到了: (b.rsn不为NULL或A.zero

嘿,我一直在尝试将一个数据库从Oracle转换为Sql Server格式,这是我遇到的一个问题,在此我将非常感谢您的帮助

甲骨文行:

TRUNC(CASE WHEN (b.rsn IS NOT NULL OR A.zeroreport = 1) AND b.datereceived IS NULL THEN A.datereceived ELSE b.datereceived END),
我一直在尝试将其转换为SQl Server,到目前为止,我得到了:

(b.rsn不为NULL或A.zeroreport=1)和b.datereceived时的情况 如果为空,则A.datereceived否则b.datereceived结束

,,
但不确定这样做是否正确。我刚刚删除了trun(不确定是否需要它)。您正在使用
trunc
获取日期部分。您可以在SQL Server中通过强制转换到日期来执行此操作。我想我会选择:

(CASE WHEN (b.rsn IS NOT NULL OR A.zeroreport = 1) AND b.datereceived IS NULL
      THEN CAST(A.datereceived as DATE)
      ELSE CAST(b.datereceived as DATE)
 END),
或者,如果您更喜欢
CONVERT()
,则将
大小写作为第一个参数更容易阅读:

CONVERT(DATE,
        (CASE WHEN (b.rsn IS NOT NULL OR A.zeroreport = 1) AND b.datereceived IS NULL
              THEN A.datereceived
              ELSE b.datereceived
         END),
        )