对于下面的代码,我收到来自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
有什么建议吗?
答案 0 :(得分:0)
请遵守此准则。
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个表进行测试。 此代码运行没有任何错误。只需按照内部查询中的列别名进行操作,外部查询的列名将相同。
答案 1 :(得分:0)
问题中的查询不会产生规定的错误,以下只是纠正列别名和使用不同的错误。
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