我有一个聚合查询和一个子查询,我想在子查询的select语句的公式中使用'parent'查询中的一个值...
像这样,我想在子查询中访问'The_Total'别名......
SELECT some_field, COUNT () AS The_Total,
(SELECT The_Total / 100 FROM Some_Table) AS The_Total_Div_100
FROM Some_Table
GROUP BY some_field
会产生这样的结果......
some_field | The_Total | The_Total_div_100
------------------------------------------
Fred | 100 | 1
Mary | 200 | 2
Bob | 300 | 3
我所拥有的查询要比使用连接和where子句等更复杂,但是这是能够在子查询选择公式中引用父查询值的能力。我尝试过“SELECT(The_Total)”,而不仅仅是The_Total等。
提前致谢。
答案 0 :(得分:1)
您无法访问"别名直接在select
子句或where
子句中。
不允许在WHERE(或SELECT)子句中引用列别名,因为在执行WHERE子句时可能尚未确定列值。
你需要再次写下这个公式。
SELECT some_field,
COUNT () AS Total,
COUNT () * 100 / (select count(*) from Some_Table) AS Total_percentage
FROM Some_Table
GROUP BY some_field
答案 1 :(得分:1)
不允许从同一SELECT子句中访问SELECT子句中的别名。
但是,可以将带有别名的整个查询移动到子查询中:
SELECT some_field,
The_Total,
(SELECT The_Total / COUNT(*)
FROM Some_Table
) AS fraction_of_The_Total
FROM (SELECT some_field,
COUNT(*) AS The_Total
FROM Some_Table
GROUP BY some_field)