Почему это не работает ??
db.execSQL("INSERT INTO PARTIES (PARTY_NAME, PARTY_COUNT) SELECT DISTINCT(PARTY), COUNT(PARTY) FROM ? WHERE (Year=?) GROUP BY PARTY ORDER BY PARTY ASC", new Object[] { "Election", "2004" });
Отлично работает в rawQuery !!
Я не знаю, на какой "rawQuery" вы ссылаетесь (URL, пожалуйста). Я не знаю ни одного механизма SQL, который бы допускал подстановку параметров для метаданных, таких как имена таблиц и столбцов - только подстановки параметров допускаются только значения или имена. SQLite не является исключением.
Может быть, не должно?
копия из документа:
public void execSQL (String sql, Object[] bindArgs)
Выполнить один оператор SQL, который НЕ является SELECT/INSERT/UPDATE/DELETE. Для операторов INSERT используйте любое из следующих действий.
SELECT/INSERT/UPDATE/DELETE.
INSERT
insert(String, String, ContentValues)
insertOrThrow(String, String, ContentValues)
insertWithOnConflict(String, String, ContentValues,int)
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html