[英]How do I SUM a UNION ALL Subquery in Oracle
对于下面的代码,我从Oracle得到以下错误消息:
“ ORA-00923:在预期位置找不到FROM关键字”。
SELECT
t1.id,
t1.code,
SUM(t1.productCount)
FROM
(SELECT
id1,
code1,
COUNT(DISTINCT(product)) as productCount1
FROM
table1
GROUP BY
id1,
code1
UNION ALL
SELECT
id2,
code2,
COUNT(DISTINCT(product2)) as productCount2
FROM
table2
GROUP BY
id2,
code2
UNION ALL
SELECT
id3,
code3,
COUNT(DISTINCT(product3)) as productCount3
FROM
table3
GROUP BY
id3,
code3) t1
GROUP BY
t1.id,
t1.code
有什么建议吗?
SELECT
id,code,SUM(productCount1)
FROM
(SELECT
id1,
code1,
COUNT(DISTINCT(product)) as productCount1
FROM
table1
GROUP BY
id1,
code1
UNION ALL
SELECT
id2,
code2,
COUNT(DISTINCT(product2)) as productCount1
FROM
table2
GROUP BY
id2,
code2
UNION ALL
SELECT
id3,
code3,
COUNT(DISTINCT(product3)) as productCount1
FROM
table3
GROUP BY
id3,
code3)
GROUP BY
id,code
请遵循此代码。
CREATE TABLE TABLE1
(
ID1 NUMBER,
CODE1 NUMBER,
PRODUCT NUMBER
);
CREATE TABLE TABLE2
(
ID2 NUMBER,
CODE2 NUMBER,
PRODUCT2 NUMBER
);
CREATE TABLE TABLE3
(
ID3 NUMBER,
CODE3 NUMBER,
PRODUCT3 NUMBER
);
SELECT
t1.id,
t1.code,
SUM(t1.productCount)
FROM
(SELECT id1 as id,
code1 as code,
COUNT(DISTINCT(product)) as productCount
FROM table1
GROUP BY id1, code1
UNION ALL
SELECT id2 as id,
code2 as code,
COUNT(DISTINCT(product2)) as productCount
FROM table2
GROUP BY id2, code2
UNION ALL
SELECT id3 as id,
code3 as code,
COUNT(DISTINCT(product3)) as productCount
FROM table3
GROUP BY id3, code3
) t1
GROUP BY t1.id,t1.code
我创建了3个表进行测试。 此代码运行无任何错误。 只需遵循内部查询中的列别名,外部查询的列名将相同。
该问题中的查询不会产生所述错误,并且以下内容仅针对列别名和使用distinct进行了更正。
SELECT
t1.idx
, t1.codex
, SUM(t1.productCount)
FROM (
SELECT
id1 AS idx
, code1 AS codex
, COUNT(DISTINCT product) AS productCount
FROM table1
GROUP BY
id1
, code1
UNION ALL
SELECT
id2
, code2
, COUNT(DISTINCT product2)
FROM table2
GROUP BY
id2
, code2
UNION ALL
SELECT
id3
, code3
, COUNT(DISTINCT product3)
FROM table3
GROUP BY
id3
, code3
) t1
GROUP BY
t1.idx
, t1.codex
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.