Sql 从sum sub select中获取另一列
我从一个子选择中选择了一些东西,这又给了我一个总和列表。现在我想选择base_unit列,它包含度量单位。我似乎无法将基本单位添加到子选择中,因为这样它就不能与GROUPBY语句一起工作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
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