如何在子查询的select语句中使用父查询值

时间:2014-07-23 08:16:34

标签: sql sqlite

我有一个聚合查询和一个子查询,我想在子查询的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等。

提前致谢。

2 个答案:

答案 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)