package de.open4me.depot.tools; import java.sql.Connection; import java.sql.PreparedStatement; import java.util.Date; import java.util.List; import de.open4me.depot.sql.GenericObjectSQL; import de.open4me.depot.sql.SQLUtils; public class Bestandsabfragen { static public List<GenericObjectSQL> getBestand(Date d) throws Exception { if (d == null) { List<GenericObjectSQL> list = SQLUtils.getResultSet("select *, concat(kurs,' ', kursw) as joinkurs, concat(wert,' ', wertw) as joinwert from depotviewer_bestand left join depotviewer_wertpapier on depotviewer_bestand.wpid = depotviewer_wertpapier.id" + " left join konto on konto.id = depotviewer_bestand.kontoid order by wpid", "depotviewer_bestand", "id"); return list; } Connection conn = SQLUtils.getConnection(); String innersql = "select " + " kontoid, " + " wpid, " + " round(sum( case when aktion='VERKAUF' then -anzahl else anzahl end),6) as anzahl, " + " (" + SQLUtils.addTop(1, "select kurs from depotviewer_kurse where wpid=depotviewer_umsaetze.wpid and kursdatum >= ? order by kursdatum") + ") as kurs ," + " (" + SQLUtils.addTop(1, "select kursw from depotviewer_kurse where wpid=depotviewer_umsaetze.wpid and kursdatum >= ? order by kursdatum") + ") as kursw ," + " (" + SQLUtils.addTop(1, "select kursdatum from depotviewer_kurse where wpid=depotviewer_umsaetze.wpid and kursdatum >= ? order by kursdatum") + ") as bewertungszeitpunkt " + " from depotviewer_umsaetze where buchungsdatum <= ? \n" + " group by kontoid, wpid"; PreparedStatement prest = conn.prepareStatement( "select *, ? as datum, round(anzahl * kurs,2) as wert , kursw as wertw, concat(kurs,' ', kursw) as joinkurs, concat(round(anzahl * kurs,2),' ', kursw) as joinwert from( " + innersql + ") as zzzz\n" + " left join depotviewer_wertpapier on zzzz.wpid = depotviewer_wertpapier.id\n" + " left join konto on konto.id = zzzz.kontoid\n" + " where anzahl > 0 order by wpid"); prest.setDate(1, new java.sql.Date(d.getTime())); prest.setDate(2, new java.sql.Date(d.getTime())); prest.setDate(3, new java.sql.Date(d.getTime())); prest.setDate(4, new java.sql.Date(d.getTime())); prest.setDate(5, new java.sql.Date(d.getTime())); return SQLUtils.getResultSet(prest, "", "", ""); } }