2014-01-11 114 views
0

您可以在单个查询中进行多个查询。我有一个相同的表,不同的地方,而且多选择总和: 错误代码:sqlite选择和多个不同的地方和同一个表

public Cursor listado_resumen(String s_mes, String s_ano) { 
    String s_actual = "-" + s_mes + "-" + s_ano; 
    String s_actual_ano = "-" + s_ano; 
    String lista_re = "SELECT *, (SELECT SUM (tr_euros) FROM bdt_registro WHERE tr_fecha LIKE '_%" + s_actual_ano + "' GROUP BY tr_codigo ORDER BY tr_codigo) AS total, (SELECT SUM (tr_euros) FROM bdt_registro WHERE tr_fecha LIKE '_%" + s_actual + "' GROUP BY tr_codigo ORDER BY tr_codigo) AS actual FROM bdt_registro GROUP BY tr_codigo ORDER BY tr_codigo";   
    return db.rawQuery(lista_re, null); 
} 

回报:
只有第一个值

鳕鱼||记述||总||实际(月)

a || house || 100 || 100
b || car || 100 || 100
c || food || 100 || 100

我喜欢回报:
鳕鱼||记述||总||实际(月)
一个||房子||。 100 || 20
b || car || 20 || 5
c || food || 5 || 0

感谢您的关注

回答

0

标量子查询只能返回一个值。 (SQLite会忽略任何附加值;其他数据库可能会报告错误)

您必须编写子查询,以便它们返回外部表中相应记录的正确值,即它们必须是相关的子查询(我假设tr_codigo的值可以用于关联):

SELECT *, 
     (SELECT SUM (tr_euros) 
     FROM bdt_registro AS r1 
     WHERE tr_fecha LIKE '_%...' 
      AND r1.tr_codigo = bdt_registro.tr_codigo 
     ) AS total, 
     (SELECT SUM (tr_euros) 
     FROM bdt_registro AS r2 
     WHERE tr_fecha LIKE '_%...' 
      AND r2.tr_codigo = bdt_registro.tr_codigo 
     ) AS actual 
FROM bdt_registro 
GROUP BY tr_codigo 
ORDER BY tr_codigo 
+0

谢谢你的回答。他的解决方案为我服务。不明智地使用相关的子查询。我关闭了帖子。 – d2000k

相关问题