IBM SQL 求和和分组依据
IBM SQL Sum and Group By
我正在尝试进行联接并获取采购订单中行项目的总数。它是网页上的网格。我正在显示 PO 的所有信息,但我还想要每个 PO 的每行项目的总美元。
我收到以下错误消息:
SQL0122 SELECT 列表中的列或表达式无效。
我不确定我做错了什么?
Tables:
Table @HPO (PO):
PO# Vendor Status
123 aaa Approved
321 bbb Approved
456 ccc Pending
654 ddd Draft
Table HPO(采购订单中的行项目):
PO# Total Price
123 100.00
123 25.00
321 75.00
456 25.00
654 10.00
654 90.00
Table 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;
在 select 列表和 group by 子句中指定列名
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
根据您的代码 - 从 group by
中删除 C.PECST
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
我正在尝试进行联接并获取采购订单中行项目的总数。它是网页上的网格。我正在显示 PO 的所有信息,但我还想要每个 PO 的每行项目的总美元。
我收到以下错误消息:
SQL0122 SELECT 列表中的列或表达式无效。
我不确定我做错了什么?
Tables:
Table @HPO (PO):
PO# Vendor Status
123 aaa Approved
321 bbb Approved
456 ccc Pending
654 ddd Draft
Table HPO(采购订单中的行项目):
PO# Total Price
123 100.00
123 25.00
321 75.00
456 25.00
654 10.00
654 90.00
Table 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;
在 select 列表和 group by 子句中指定列名
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
根据您的代码 - 从 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