Я пытаюсь объединить 3 запроса для выполнения арифметической операции. Запросы показаны вОшибки сервера Sql в запросе
(SELECT ITEM_ID,ISNULL(SUM(REC_GOOD_QTY),0)
FROM INVENTORY_ITEM
WHERE COMPANY_ID = 1
AND INVENTORY_ITEM.COMPANY_BRANCH_ID = 1
AND INVENTORY_ITEM.INV_ITEM_STATUS = 'Inward'
AND GRN_DATE < CAST('2017-01-10 00:00:00.0' AS DATETIME)
GROUP BY INVENTORY_ITEM.ITEM_ID) -
(SELECT ITEM_ID, SUM (TOTAL_LITRE)
FROM STOCK_REQUISITION_ITEM B, STOCK_REQUISITION A
WHERE A.ID = B.REQUISITION_ID
AND A.COMPANY_ID = 1
AND A.REQ_FROM_BRANCH_ID = 1
AND A.REQUISITION_DATE < CAST('2017-01-10 00:00:00.0' AS DATETIME)
GROUP BY B.ITEM_ID) +
(SELECT ITEM_ID, SUM (RETURN_QUANTITY)
FROM STOCK_RETURN_ITEM B, STOCK_RETURN A
WHERE A.ID = B.STOCK_RETURN_ID
AND A.COMPANY_ID = 1
AND A.COMPANY_BRANCH_ID = 1
AND A.RETURN_DATE <= CAST('2017-01-10 00:00:00.0' AS DATETIME)
GROUP BY B.ITEM_ID)
Я получаю эту ошибку.
[Err] 42000 - [SQL Server] Неверный синтаксис рядом с '-'.
42000 - [SQL Server] Неправильный синтаксис около '+'
Этот запрос является беспорядочным с точки зрения форматирования. Сделайте себе одолжение и ознакомьтесь с пробелом. Вы также должны использовать разумные псевдонимы таблицы. Псевдоним не очень полезен, если вам нужно снова и снова ссылаться на основную часть запроса, чтобы увидеть, из какой таблицы появляется A.SomeColumn. Тогда вы не согласны с их использованием. Иногда вы делаете, а другие - нет. И последнее, но не менее важное - это устаревший синтаксис соединения. Присоединение к стилю ANSI-92 существует уже более 25 лет. http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx –
Существует таблица, в которой у вас есть список ITEM_ID, не повторяющийся ? В таблице Inventory_item имеется более одной строки для одного и того же идентификатора ITEM_ID, не так ли? –
Да, абсолютно правильный брат. На самом деле ваше решение намного ближе, но возвращает значение суммы неверно :( –