Sql 从sum sub select中获取另一列

Sql 从sum sub select中获取另一列,sql,group-by,subquery,Sql,Group By,Subquery,我从一个子选择中选择了一些东西,这又给了我一个总和列表。现在我想选择base_unit列,它包含度量单位。我似乎无法将基本单位添加到子选择中,因为这样它就不能与GROUPBY语句一起工作 SELECT to_char(a.pow * f_unit_converter(base_unit, '[W]'), '000.00') FROM ( SELECT sum (time_value) AS pow FROM v_value_quarter_hour WHERE

我从一个子选择中选择了一些东西,这又给了我一个总和列表。现在我想选择base_unit列,它包含度量单位。我似乎无法将基本单位添加到子选择中,因为这样它就不能与GROUPBY语句一起工作

SELECT to_char(a.pow * f_unit_converter(base_unit, '[W]'), '000.00') 
FROM (
    SELECT sum (time_value) AS pow 
    FROM v_value_quarter_hour
    WHERE 
       mp_id IN (SELECT mp_id FROM t_mp WHERE mp_name = 'AC') AND 
       (now() - time_stamp < '5 day') 
    GROUP BY time_stamp
    ORDER BY time_stamp DESC 
) a 
LIMIT 1
在哪里/如何从t\u mp表中为这些总和选择基本单位,以便将其传递给f\u unit\u转换器函数

非常感谢,
MrB

假设您选择的所有行都具有相同的基本单位,您应该能够将其添加到子查询的SELECT和GROUP BY中。

使用内部联接而不是IN。像这样的

SELECT to_char(a.pow * f_unit_converter(base_unit, '[W]'), '000.00')  FROM (
    SELECT sum (time_value), base_unit AS pow 
    FROM v_value_quarter_hour
    INNER JOIN t_mp ON v_value_quarter_hour.mp_id = t_mp.mp_id
    WHERE mp_name = 'AC' AND 
       now() - time_stamp < '5 day'
    GROUP BY time_stamp, base_unit
    ORDER BY time_stamp DESC  ) a  LIMIT 1
SELECT to_char(a.pow * f_unit_converter(a.base_unit, '[W]'), '000.00') 
FROM (
    SELECT sum (time_value) AS pow, t_mp.base_unit
    FROM v_value_quarter_hour
        inner join t_mp on (v_value_quarter_hour.mp_id = t_mp.mp_id)
    WHERE 
       t_mp.mp_name = 'AC' AND 
       (now() - time_stamp < '5 day') 
    GROUP BY time_stamp, base_unit
    ORDER BY time_stamp DESC 
) a 
LIMIT 1