=== modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/jdbc/JDBCCrossTabStore.java' --- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/jdbc/JDBCCrossTabStore.java 2011-09-23 16:22:15 +0000 +++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/crosstab/jdbc/JDBCCrossTabStore.java 2011-10-19 14:01:02 +0000 @@ -117,7 +117,9 @@ { final StatementHolder holder = statementManager.getHolder(); - final String sql = "SELECT * FROM " + CROSSTAB_TABLE_PREFIX + key + " AS c WHERE c.periodid IN (" + + final String operandIds = getCommadelimitedString( operands ); + + final String sql = "SELECT periodid, sourceid, " + operandIds + " FROM " + CROSSTAB_TABLE_PREFIX + key + " AS c WHERE c.periodid IN (" + getCommaDelimitedString( periodIds ) + ") AND c.sourceid IN (" + getCommaDelimitedString( sourceIds ) + ")"; try @@ -141,7 +143,9 @@ { final StatementHolder holder = statementManager.getHolder(); - final String sql = "SELECT * FROM " + CROSSTAB_TABLE_PREFIX + key + " AS c WHERE c.periodid IN (" + + final String operandIds = getCommadelimitedString( operands ); + + final String sql = "SELECT periodid, sourceid, " + operandIds + " FROM " + CROSSTAB_TABLE_PREFIX + key + " AS c WHERE c.periodid IN (" + getCommaDelimitedString( periodIds ) + ") AND c.sourceid = " + sourceId; try @@ -229,4 +233,21 @@ return values; } + + private String getCommadelimitedString( Collection operands ) + { + final StringBuilder builder = new StringBuilder(); + + for ( DataElementOperand operand : operands ) + { + builder.append( operand.getColumnName() ).append( "," ); + } + + if ( builder.length() > 0 ) + { + builder.deleteCharAt( builder.length() - 1); + } + + return builder.toString(); + } }