我有一个表格,如表格(PK,a,b,c,d,e,f,g)。
我想加入许多查询:
select PK, sum(c) where...
JOIN
select PK, sum(e) where...
JOIN
select PK, sum(g) where ...
JOIN
select PK,a,b,d,f
每个总和(c | e | g)实际上是
select sum(c|e|g) from .... where...
因为涉及很多条件(并非所有c | e | g都必须添加)
这是最好的方法吗?我被建议用PL / SQL编写,我必须学习。如果它的方式去,我会这样做,但我不确定上面显示的解决方案是否有错。
我很确定这是一个加入。这就是我想要的。
我需要在表单中获得结果集:
PK, a,b,COMPLEX_SUM_ON_C,d,COMPLEX_SUM_ON_D,f,COMPLEX_DUM_ON_G
所以我想加入很多查询来获得这个结果。
每个COMPLEX ...都是另一个选择(选择总和...)。这是一张非常大的表,并且正在编写
select a,b,(select sum..),d,(select sum...),f,(select sum...)
会产生糟糕的表现(所以我被告知要将其删除)
我上面编辑了我的查询。
提前致谢。
答案 0 :(得分:3)
我认为你的意思是“UNION”不是“加入”。是否最好的方式取决于你想要达到的目标。
答案 1 :(得分:2)
JOIN的一个例子如下:
Select a.col1, b.col2
FROM table1 a, table2 b
WHERE a.key = b.key;
也可以写成:
SELECT a.col1, b.col2
FROM table1 a
INNER JOIN table2 b
ON a.key = b.key;
修改强>
在阅读完原始问题的重新编辑后,您可以使用JOIN。当您在多个表中包含相关数据时,可以使用JOIN,也可以多次指定同一个表。我和Oracle都使用了这两种。以下是后一种类型的例子,希望对您有所帮助:
SELECT t1.a, t1.b, t3.sum(c), t2.d, t4.sum(e), t1.f, t5.sum(g)
FROM table1 t1, table1 t2, table1 t3, table1 t4, table1 t5
WHERE t1.a = 'hello'
AND t2.a = 'world'
AND t3.c = 10
AND t4.e = 20
AND t5.g = 100
GROUP BY t1.a, t1.b, t2.d, t1.f;
答案 2 :(得分:2)
这还不是一个定义明确的问题。
假设PK是您的主键(即根据定义是唯一的),那么
SELECT PK, SUM(c)
FROM tbl
GROUP BY PK
始终与
相同SELECT PK, c
FROM tbl
因此分组(和聚合)相对没有意义。
在您的预期结果中:
PK, a,b,COMPLEX_SUM_ON_C,d,COMPLEX_SUM_ON_D,f,COMPLEX_DUM_ON_G
COMPLEX_SUM_ON_C
,COMPLEX_SUM_ON_D
,COMPLEX_DUM_ON_G
如何与PK相关?
我们知道a,b,d,f是如何与PK相关的,因为对于每个PK,可以识别同一行中的一个而且只能识别a,b,d,f。