#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 . . . Когда вы изменили код, вы, похоже, удалили закрывающего родителя.