2013-05-07 3 views
0

Friends. Je suis confus avec les requêtes suivantes.sélectionner par mois à partir de la base de données sqlite

c = db.rawQuery("SELECT strftime('%W', tm.txn_date) AS week, 
       sum(case when cm.master_id = 1 then (tm.amount - tm.pre_amount) else 0 end) AS Income, 
       sum(case when cm.master_id = 2 then (tm.pre_amount - tm.amount) else 0 end) AS Expense 
       FROM transmaster tm 
       INNER JOIN subcatmasters scm ON tm.scmaster_id = scm.id 
       INNER JOIN catmasters cm ON scm.catmaster_id = cm.id 
       WHERE strftime('%m', tm.txn_date) = '05' 
       GROUP BY week ORDER BY week DESC", null); 

Celui-ci fonctionne parfaitement mais.

c = db.rawQuery("SELECT strftime('%W', tm.txn_date) AS week, 
       sum(case when cm.master_id = 1 then (tm.amount - tm.pre_amount) else 0 end) AS Income, 
       sum(case when cm.master_id = 2 then (tm.pre_amount - tm.amount) else 0 end) AS Expense 
       FROM transmaster tm 
       INNER JOIN subcatmasters scm ON tm.scmaster_id = scm.id 
       INNER JOIN catmasters cm ON scm.catmaster_id = cm.id 
       WHERE strftime('%m', tm.txn_date) = '"+05+"' 
       GROUP BY week ORDER BY week DESC", null); 

Celui-ci n'a pas fonctionné. Quel est le problème des amis.

Je suis juste changer WHERE strftime('%m', tm.txn_date) = '05' cette ligne à WHERE strftime('%m', tm.txn_date) = '"+05+"' Pourquoi parce que je veux donner le numéro du mois explicitement.

S'il vous plaît aidez-moi. Merci d'avance.

Répondre

1

Essayez ceci:

c = db.rawQuery("SELECT strftime('%W', tm.txn_date) AS week, 
       sum(case when cm.master_id = 1 then (tm.amount - tm.pre_amount) else 0 end) AS Income, 
       sum(case when cm.master_id = 2 then (tm.pre_amount - tm.amount) else 0 end) AS Expense 
       FROM transmaster tm 
       INNER JOIN subcatmasters scm ON tm.scmaster_id = scm.id 
       INNER JOIN catmasters cm ON scm.catmaster_id = cm.id 
       WHERE strftime('%m', tm.txn_date) = '0"+5+"' 
       GROUP BY week ORDER BY week DESC", null); 

Qu'en est-il?

+0

Qu'en est-quoi? –

+0

ah! Ma grandeur. Merci ami – Gunaseelan

+0

Vous êtes les bienvenus, mais attention, pour les mois comme: 10, 11 et 12, n'oubliez pas de ne pas ajouter le zéro. – user2358253

1

Vous devriez faire quelque chose plus propre et déclarer une variable pour votre numéro de mois:

String monthNumber = "05"; 
String request = "SELECT strftime('%W', tm.txn_date) AS week, " + 
       "sum(case when cm.master_id = 1 then (tm.amount - tm.pre_amount) else 0 end) AS Income, " + 
       "sum(case when cm.master_id = 2 then (tm.pre_amount - tm.amount) else 0 end) AS Expense " + 
       "FROM transmaster tm " + 
       "INNER JOIN subcatmasters scm ON tm.scmaster_id = scm.id " + 
       "INNER JOIN catmasters cm ON scm.catmaster_id = cm.id " + 
       "WHERE strftime('%m', tm.txn_date) = '" + monthNumber + "' " + 
       "GROUP BY week ORDER BY week DESC"; 
c = db.rawQuery(request, null); 
Questions connexes