У меня есть эта линия, я борюсь с преобразовать запрос из Oracle в SQL Server 2012 следующая строка:Преобразовать Decode из Oracle в случае из MS SQL Server
DECODE(SUM(DECODE(a.canceldate, NULL, 1,0)), 1, NULL, To_Date(MAX(TO_CHAR(a.canceldate,'yyyymmdd')), 'yyyymmdd')) dCancelDate,
Как я inteprete для преобразования это нравится:
case a.canceldate
(when sum(case a.canceldate when Null then 1 else 0 end))
when 1
then 0
else convert(datetime,a.canceldate)
end max(a.canceldate) as dCancelDate,
Я признателен помощнику, моя линия не подходит для SQL Server 2012.
@JoelJacobson - два возможных синтаксиса для 'case', один с логическим условием (например,' = ', но это могут быть и другие вещи, такие как' is null '), а другое только со значениями, называются «** simple **' case' expression »и« ** look ** выражение case », по крайней мере, в Oracle. Не уверен, поддерживает ли SQL Server оба; Я использовал оба перевода. Если он не работает как есть, попробуйте использовать только «простой» синтаксис. – mathguy
Итак, я дал ему выстрел, но 'trunc (max (a.canceldate))' не распознает функцию, я стараюсь не уверен, что код отправителя из oracle, но мне просто нужно его преобразовать, поскольку это спасибо , –
@JoelJacobson - Работает ли выражение перевода «case»? Если вы не можете проверить из-за 'max (...)' (вычисления даты), замените эту часть простой датой (например, SYSDATE в Oracle, не уверен, что такое SQL Server), чтобы увидеть, декодирование "является правильным. Если вам нужна дополнительная помощь при вычислении даты, возможно, это отдельный вопрос, который вы можете разместить здесь (не связанный с переводом DECODE на CASE). – mathguy