Проблема синтаксиса инструкции SQL select

#sql

Вопрос:

Я получаю ошибку с приведенным ниже кодом, извините, это, вероятно, очень упрощенный вопрос, но я действительно не понимаю, почему он не работает.

Я получаю ошибку «Строка 9, столбец 1 Неправильный синтаксис рядом с «от»».

 select distinct
b.Identifier,
(b.Low  b.High) / 2 as bAverage,
m.Average as mAverage,
coalesce(
case when mAverage not null then ((((b.Low   b.High) / 2)   m.Average) / 2) else null end,
case when mAverage is null then ((b.Low   b.High) / 2)) end as TotalAvg,
(b.Volume   m.Qty) as TotalVolume
from table_b_data b
full outer join table_m_data m on b.Identifier=m.Identifier
 

Ответ №1:

У тебя coalesce() нет заключительного родителя. Я мог бы написать это так:

 coalesce( m.average / 4   (b.Low   b.High) / 4,
          (b.Low   b.High) / 2
        ) as TotalAvg,
 

В case этом нет необходимости, потому что арифметическое выражение вернется NULL . Я просто перефразировал арифметику (надеюсь, правильно!), чтобы уменьшить количество скобок.

Комментарии:

1. спасибо — это работает при упрощении и удалении случая, когда. по какой-то причине это сработало для меня один раз в случае, когда я вставил 8-ю строку, и она начала воспроизводиться. Но теперь работает нормально — ура.

2. @st87_top . . . Когда вы изменили код, вы, похоже, удалили закрывающего родителя.