我有以下情况。以这种格式返回结果的查询:
N1 || 10 || 5
N2 || 20 || 9
N3 || 5 || 4
通过一些无法修复的错误,N3的名称与N1不同,但它们应该相同。我希望将第1行和第3行组合在一起,使它们成为:
N1 || 15 || 9
所以我想合并第1行和第3行。使用常规矩阵表示法,所需的输出等于:
M(1,1) || M(1,2)+M(3,2) || M(1,3)+M(3,3).
由于数据库不允许这样做,我无法定义临时表来存储结果。有没有办法达到理想的输出?
答案 0 :(得分:1)
您可以将现有查询用作内联视图,使用GROUP BY折叠行。只需使用一个用'N1'替换'N3'的表达式。
y0=np.hstack((y_init, m_init))
注意:替换 SELECT IF(q.name1='N3','N1',q.name1) AS name1
, SUM(q.val2) AS val2
, SUM(q.val3) AS val3
FROM (
-- put here the query query that returns resultset
--
-- name1 val2 val3
-- ----- ---- ----
-- N1 10 5
-- N2 20 9
-- N3 5 4
--
SELECT ... AS name1
, ... AS val2
, ... AS val3
FROM ...
) q
GROUP BY IF(q.name1='N3','N1',q.name1)
ORDER BY 1
,name1
,val2
以匹配内联视图中查询返回的列名。