我有一个包含这样的列的表:
+--------+----+--------+---------------+------- +-------+---------+
| DATE | ID | Name | Cattle Type | Liter | Shift | Payment |
+--------+----+--------+---------------+------- +-------+---------+
数据就像这样
9-9-2016 | 01 | Abhi | Cow | 2 | AM | 50 |
9-9-2016 | 02 | Ram | Buff | 1 | AM | 25 |
9-9-2016 | 01 | Abhi | Buff | 2 | PM | 50 |
9-9-2016 | 01 | Abhi | Cow | 2 | PM | 50 |
我通过在数据库函数中传递日期来获取所有数据 例如: -
databaseObject.getAlldata(String From_date, StringTo_date)
之后我从数据库中获取所有值,然后将其存储到列表中。
我需要没有任何重复的id。其实我需要他们的id和牛类型,升,支付什么是最好的Sqlite命令来做到这一点?
我想要的结果是这样的:
ID : 1
Cow = 4.00 Litre Rs 100
Buff = 2.00 Litre Rs 50
Total = Rs 150
ID : 2
Cow = 0.00 Litre Rs 0.0
Buff = 1.00 Litre Rs 25
Total = Rs 25
我的代码是:
list1 = db.getAllMilkCollection(start, end);
try {
for( i = 0; i < list1.size(); i++) {
CattleTypeCowTotal = 0;
CattleTypeBuffTotal = 0 ;
String id = list1.get(i).member_code;
list2 = db.getAllDataOfPaymentRegister(start,end,id);
for( j = 0; j < list2.size(); j++) {
String member_name = list2.get(j).member_name;
String Cattle_type = list2.get(j).cattle_type;
if(Cattle_type.equalsIgnoreCase("Cow")){
String amount = list2.get(j).amount.trim();
if(amount!=null){
CattleTypeCowTotal += Float.parseFloat(amount);
}
}
if(Cattle_type.equalsIgnoreCase("buff")){
String amount = list2.get(j).amount.trim();
if(amount != null){
CattleTypeBuffTotal += Float.parseFloat(amount);
}
}
}
System.out.println("xxxxxxxxxxxxxxxxxxxx");
}
} catch (Exception e) {
Log.e("Error", ""+e);
}
提前致谢:):)
答案 0 :(得分:0)
您可以这样做:
Select ID, Name, Cattle_TYPE, SUM(Liter) as Quantity, SUM(payment) as Total
from Table_name
where date > from_date
and date < to_date
group by ID,Name,Cattle_TYPE
这将以适当的格式为您提供所需的所有记录。只需将其添加到列表中,然后执行您想要的操作。
答案 1 :(得分:0)
考虑您要显示按ID显示的数据,显示数量总和(在您的情况下为升)和每头牛的付款总和
1。使用以下查询获取数据,其中包含按 ID 分类的每只牛的数量和付款总额
select ID, Cattle_type, sum(Liter) as Quantity, sum(Payment) as Total from ABC
where Date between "2016-09-09" and "2016-09-10"
group by Cattle_type, ID;
2. :创建一个模型类,并将上述查询的结果存储到其中。
3. 将模型类的对象添加到ArrayList中。
我想从这里您可以设法显示按 ID 分类的数据,并获得每个 ID 的总付款。
答案 2 :(得分:-1)
SQLite DISTINCT关键字与SELECT语句结合使用,以消除所有重复记录并仅提取唯一记录。
如果表中有多个重复记录,可能会出现这种情况。在获取此类记录时,仅获取唯一记录而不是获取重复记录更有意义。
有关详细信息,请查看link
答案 3 :(得分:-1)
Cursor cursor = db.query(true, YOUR_TABLE_NAME, new String[] { COLUMN_NAME_1 ,COLUMN_NAME_2, COLUMN_NAME_3 }, null, null, COLUMN_NAME_2, null, null, null);
COLUMN_NAME_2是数据必须与之不同的列。