У меня есть база данных с информацией от нескольких компаний, которые по-разному записывают свои данные.Чтобы отметить, что такое кредитовое авизо / финансовый сбор / счет-фактура / и т.д., 3 компании используют определенное поле, в то время как 3 другие компании просто полагаются на положительные и отрицательные значения.
Но мне нужны итоги - и они будут нужны мне часто ... поэтому я подумал, что утверждение Sum Case - это путь.
Я прочитал много похожих вопросов на этом сайте -но я не нахожу исправления, которое работает.Большинство из них либо не для SSMS, либо не обращаются к нескольким классификаторам.
Я могу получить индивидуальную итоговую компанию по компании, но, похоже, должен быть способ сделать все это за один раз.Итак, вот что я придумаю:
SUM(CASE WHEN((ff29='invoice' AND (import_source_id=1 OR import_source_id=2 OR import_source_id=6)) OR (amount_invoice>0 AND (import_source_id=4 OR import_source_id=5 OR import_source_id=8)) THEN CAST(amount_invoice AS DECIMAL(18,2)) ELSE 0 END) AS 'Debits',
SUM(CASE WHEN((ff29='credit memo' AND (import_source_id=1 OR import_source_id=2 OR import_source_id=6)) OR (amount_invoice<0 AND (import_source_id=4 OR import_source_id=5 OR import_source_id=8)) THEN CAST(amount_invoice AS DECIMAL(18,2)) ELSE 0 END) AS 'Credits'
Я ожидал, что мои результаты будут отображаться в виде 2 столбцов (Debits & Credits) для каждой компании (import_source_id) - но включать только определенные результаты, которые по-разному записываютсякаждая компания, которая находится в моей базе данных.
Сообщение 156, Уровень 15, Состояние 1, Строка 4 Неверный синтаксис рядом с ключевым словом 'THEN'.Сообщение 102, Уровень 15, Состояние 1, Строка 10 Неверный синтаксис рядом с '='.Msg 102, Уровень 15, Состояние 1, Строка 11 Неверный синтаксис рядом с '='.
Я также не знаю, что поставить в начале и конце кода в этих полях с вопросами, чтобы он показывалсякрасиво отделены в этой серой коробке, как и все остальные.Итак, я прошу прощения за это.