IBM SQL Sum и Group By - PullRequest
       18

IBM SQL Sum и Group By

1 голос
/ 21 марта 2019

Я пытаюсь выполнить объединение и получить общую (сумму) позиций в заказах на покупку.Это сетка на веб-странице.Я отображаю всю информацию о заказе, но мне также нужен общий доллар на отдельные позиции для заказа на покупку.

Я получаю следующее сообщение об ошибке:

SQL0122 Столбец или выражение в списке SELECT недействительны.

Я не уверен, что делаю не так?

Таблицы:

Таблица @HPO (PO):

PO#   Vendor  Status
123   aaa     Approved
321   bbb     Approved
456   ccc     Pending
654   ddd     Draft  

Таблица HPO (Строки в PO):

PO#  Total Price
123  100.00
123  25.00
321  75.00
456  25.00
654  10.00
654  90.00

Таблица AVM (Поставщик):

Vendor Vendor#
aaa     444
bbb     555
ccc     777 

Вот мой код:

    EXEC SQL Declare RSCURSOR1 cursor for
          SELECT A.*, B.*, SUM(C.PECST) as POTOTAL
          FROM @HPO A
          INNER JOIN AVM B on A.HPOVNO = B.VENDOR
          INNER JOIN HPO C on A.HPOORD = C.PORD
          GROUP BY C.PORD
          ORDER BY HPOORD DESC

          OFFSET (:StartingRow - 1) * :NbrOfRows ROWS
          FETCH NEXT :NbrOfRows + 1 ROWS ONLY;

          EXEC SQL  Open RSCURSOR1;

          EXEC SQL SET RESULT SETS Cursor RSCURSOR1;  

Update code:

EXEC SQL Declare RSCURSOR1 cursor for
      SELECT A.HPOORD, A.HPORNB, A.HPORBY, A.HPODTO, A.HPOSTS, A.HPOVNO, A.HPOURG, B.VNDNAM, SUM(C.PECST) as POTOTAL
      FROM @HPO A
      INNER JOIN AVM B on A.HPOVNO = B.VENDOR
      INNER JOIN HPO C on A.HPOORD = C.PORD
      GROUP BY A.HPOORD, A.HPORNB, A.HPORBY, A.HPODTO, A.HPOSTS, A.HPOVNO, A.HPOURG, B.VNDNAM, C.PECST
      ORDER BY HPOORD DESC

      OFFSET (:StartingRow - 1) * :NbrOfRows ROWS
      FETCH NEXT :NbrOfRows + 1 ROWS ONLY;

      EXEC SQL  Open RSCURSOR1;

      EXEC SQL SET RESULT SETS Cursor RSCURSOR1;    

1 Ответ

3 голосов
/ 21 марта 2019

указать имена столбцов в списке выбора, а также в группе по пункту

DEMO

SELECT A.PO#,Vendor,Status, SUM(C.PECST) as POTOTAL
      FROM @HPO A
      INNER JOIN AVM B on A.HPOVNO = B.VENDOR
      INNER JOIN HPO C on A.HPOORD = C.PORD
      GROUP BY A.PO#,Vendor,Status
      ORDER BY HPOORD DESC

КАК для вашего кода - удалите C.PECST из group by

SELECT A.HPOORD, A.HPORNB, A.HPORBY, A.HPODTO, A.HPOSTS, A.HPOVNO, A.HPOURG, B.VNDNAM, SUM(C.PECST) as POTOTAL
      FROM @HPO A
      INNER JOIN AVM B on A.HPOVNO = B.VENDOR
      INNER JOIN HPO C on A.HPOORD = C.PORD
      GROUP BY A.HPOORD, A.HPORNB, A.HPORBY, A.HPODTO, A.HPOSTS, A.HPOVNO, A.HPOURG, B.VNDNAM
      ORDER BY HPOORD DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...