DB2如何使用SUM函数加入
问题描述:
DB2信息:Z/OS V9.1DB2如何使用SUM函数加入
我试图创建一个从不同的表中选择不同的列的查询和表列的之一,我需要的总和。例如:
SELECT A.column1, B.*, SUM(C.Colum3) as col3
FROM schema.TableA A, schema.TableB B, schema.TableC C
WHERE A.column2 = B.column2 AND A.column1 = C.column1
GROUP BY A.column1;
该查询不起作用。我得到一个错误:
COLUMN OR EXPRESSION IN THE SELECT LIST IS NOT VALID.
我试图像这样一个How can I sum a group of sums? SQL Server 2008
这是SQL Server不同的查询例子,这样可为什么它不工作。没有很多DB2的例子。 :(
答
因为在SQL Server中以及其他所有主要RDBMS(在此不包括MySQL的怪癖)中都会遇到同样的错误:您有GROUP BY
子句中未包含的列或聚合的一部分,所以系统不知道如何处理它们(MySQL为这些列返回一个随机行,我想可能不是你想要的)
目前还不清楚你想要得到'总和'的,因为你只列出了一个SUM()
假设TableC
是你需要聚集,使用公用表表达式(CTE),像这样只表:
WITH Summed_TableC (column1, summedColumn) as (SELECT column1, SUM(column3)
FROM TableC
GROUP BY column1)
SELECT a.Column1, b.*, c.summedColumn
FROM schema.TableA as a
JOIN schema.TableB as b
ON b.column2 = a.column2
JOIN Summed_TableC as c
ON c.column1 = a.column1
哦 - 从不使用隐式连接语法。你已经很好地限定了哪些表的哪些列来自哪里,但是如果你不这样做,这只是简单的混淆。避免通过明确的JOIN
表和它们的列。
太棒了!谢谢!我得到了它的工作。 –