Java 如何选择记录而不在一个字段上重复
我有一个包含如下列的表:Java 如何选择记录而不在一个字段上重复,java,android,sql,sqlite,android-sqlite,Java,Android,Sql,Sqlite,Android Sqlite,我有一个包含如下列的表: +--------+----+--------+---------------+------- +-------+---------+ | DATE | ID | Name | Cattle Type | Liter | Shift | Payment | +--------+----+--------+---------------+------- +-------+---------+ ID : 1 Cow = 4.00 Litre R
+--------+----+--------+---------------+------- +-------+---------+
| DATE | ID | Name | Cattle Type | Liter | Shift | Payment |
+--------+----+--------+---------------+------- +-------+---------+
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
数据是这样的
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和牛的类型,升,付款什么是最好的Sqlite命令来做这件事
我想要的结果是这样的:
+--------+----+--------+---------------+------- +-------+---------+
| DATE | ID | Name | Cattle Type | Liter | Shift | Payment |
+--------+----+--------+---------------+------- +-------+---------+
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);
}
list1=db.getAllMilkCollection(开始,结束);
试一试{
对于(i=0;i
提前感谢:):)SQLite DISTINCT关键字与SELECT语句结合使用,以消除所有重复记录并仅获取唯一记录 当一个表中有多条重复记录时,可能会出现这种情况。在获取此类记录时,只获取唯一记录而不是获取重复记录更有意义 有关更多信息,请查看
COLUMN\u NAME\u 2是数据必须不同的列。您可以执行以下操作:
选择ID、名称、牛的类型、数量(升)和总数(付款)
从表\u名称
其中日期>起始日期
和日期<截止日期
按ID、名称、类型分组
这将以适当的格式为您提供所需的所有记录。只需将其添加到列表中,然后想做什么就做什么。考虑到您希望显示按照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的总付款。使用
分组方式
。我猜您希望显示根据ID分类的数据,显示数量总和(在您的情况下为升)和每头牛的付款总额。如果我理解错了,请纠正我。是的@Monish Kamble是的,我想要那样的东西。。thanks@AbhishekPunia:检查我下面的答案。它给出的错误是无法从游标窗口读取第0行第1列where date>from_date和date
为什么不where date from_date和to_date之间的日期
?@Abhishek:您是用Java SQLite驱动程序启动此查询的吗?如下所示,stmt=c.createStatement();ResultSet rs=stmt.executeQuery(在SQL字符串上方)@Rotwang:你可以在两种或两种以上的方法之间使用,猜猜哪一种更好?