2016-08-08 44 views
0
╔═══╦════════════╦═════════════╗ 
║id ║ TV#  ║ Time  ║ 
╠═══╬════════════╬═════════════╣ 
║ 1 ║ TV1  ║ 0   ║ 
║ 2 ║ TV2  ║ 10   ║ 
║ 3 ║ TV3  ║ 0   ║ 
║ 4 ║ TV3  ║ 20   ║ 
║ 5 ║ TV3  ║ 21   ║ 
║...║ ...  ║ ...   ║ 
╚═══╩════════════╩═════════════╝ 

ich die Anzahl der Elemente ID für jeden TV #, zählen will, muss ich das Ergebnis sein wollen:Birt Bericht - die Zeit> 0 In diesem Fall zählen die Anzahl der Zeiten entspricht es ein Kriterium

TV1 - 0; TV2 - 1; TV3 - 2

Ich benutze BIRT Report, und ich habe verschiedene Möglichkeiten ausprobiert, aber ich konnte nicht bekommen, was ich will.

ich verschiedene Möglichkeiten ausprobiert habe, ist das, was ich im Moment bin mit:

Daten Cube, Zusammenfassung Felder (messen)

Funktion: Graf

Expression: Maß [ "id"]

Filter: Maßnahme [ "Time"]> 0

Und th en ich eine Aggregation Builder bin mit:

Funktion: Graf oder Sum

Ausdruck: Maßnahme [ "id"]

Filter: Maßnahme [ "Time"]> 0

Aggregate auf: GroupTV #

wenn ich Zählung, diese zurückkehrt: nur 0 und 1 (es gibt mir „1“ TV # wenn es mindestens eine Zeit> 0 ist), dh TV1 - 0; TV2 - 1; TV3 - 1

Wenn ich sum verwende, gibt dies zurück: die Anzahl der Zeiten, die jedes TV # auf dem Tisch erscheint (wenn mindestens eine Zeit> 0 für diesen Kanal ist), dh TV1 - keine Ausgabe; TV2 - 1; TV3 - 3

Kann mir jemand helfen?

+0

Komm schon. Versuche etwas. – Strawberry

+0

@Strawberry - ein etwas unfairer Kommentar, da blocnt zwei Dinge beschrieben hat, die er ausprobiert und erklärt hat, wie beide nicht die gewünschten Ergebnisse erzielen. – PaulF

Antwort

0

statt Verwenden Sie Filter auf Datenwürfel oder auf Kreuztabellen oder in Charts, filtern Sie nur nach Datensätzen.

0

Z. B .:

SELECT tv 
    , SUM(CASE WHEN time > 0 THEN 1 ELSE 0 END) x 
    FROM my_table 
GROUP 
    BY tv; 
+0

danke, wo sollte diese Struktur verwendet werden? als Filter? – blocnt

+0

Dies ist in Bezug auf das mysql-Tag. Ich weiß nichts über Birt – Strawberry

0

Jede Methode sollte funktionieren, aber in Ihrem Beispiel sind Sie das Auftreten einer bestimmten ID anstelle von ‚TV #‘ zu zählen. Natürlich, da die IDs eindeutig sind, wird es immer nur ein einziges vorkommen.

Sie benötigen:

Funktion: Graf

Ausdruck: Wechsel von 'id' zu 'TV #'

Filter: Maßnahme [ "Time"]> 0

+0

Das funktioniert nicht. Es gibt mir nur "1" oder "0" (es identifiziert richtig, wenn es eine Zeit> 0 gibt, aber nicht wie oft das passiert) – blocnt