2013-07-16 8 views
6

Ich bin ein Rang noob bei jeder Berichterstattung aber horizontale Zeilen mit Zwischensummen. Ich habe einen Datensatz, der die Zeiten von Autos in einem Parkplatz umfasst. Ich muss eine Tabelle mit einer Spalte für jede Stunde und einer Zeile für jeden Tag erstellen, die die Anzahl der Einträge zu einem bestimmten Zeitpunkt an einem bestimmten Tag anzeigt.Wie erreiche ich einen Pivot-Bericht in Crystal Reports für Visual Studio?

Ich würde dies einfacher im RDLC-Designer finden, mit seinen Spalten Gruppierungen, aber ich kann nicht einmal so etwas in Crystal finden.

Hilfe.

+0

Haben Sie eine Kreuztabelle versucht? – craig

Antwort

3

Unter der Annahme, folgende Felder: {table.car_id} und {table.census_time}

  • Wählen Sie Einfügen | Kreuztabellen ...; hinzufügen Kreuztabelle melden-Header-Abschnitt

Rechtsklick auf die Kreuztabelle und wählen 'Cross Tab Experte':

  • hinzufügen {table.census_time] in die Spalte Feldliste; Gruppieren nach Stunde
  • Fügen Sie {table.census_time} der Zeilenfeldliste hinzu; Gruppieren nach Tag
  • Fügen Sie der Übersichtsfeldliste {table.car_id} hinzu; zählen

** bearbeiten **

Sie benötigen keine spezielle Formel zu erstellen, um die Stunde ab dem Datum/Zeit-Feld zu extrahieren; Der Kreuztablett wird das für Sie tun.

enter image description here Wählen Sie die Registerkarte "Kreuztabellen" aus, fügen Sie das Feld {table.census_time} hinzu, und klicken Sie dann auf die Schaltfläche "Gruppenoptionen ...".

enter image description here

Wähle 'für jede Stunde.' von der Auswahlliste.

+0

Wie kann ich z.B. gruppieren Sie die Spalten nach Stunden? Ist es die 2. Registerkarte, Gruppenoptionen, Formel als Gruppenname verwenden? Dort versuche ich und verwende die Formel 'Hour ({table.census_time])' und es sagt mir, dass es einen Fehler gibt, "Der verbleibende Text scheint nicht Teil der Formel zu sein". – ProfK

1

Sie müssen für jede Stunde eine Tabelle mit einem Datensatz erstellen:

Tabelle DayHour

Period    StartHour  EndHour 
00:00 - 01:00  0     1 
01:00 - 02:00  1     2 
02:00 - 03:00  2     3 
03:00 - 04:00  3     4 
... 
23:00 - 00:00  23    24 

links dann Ihre Daten mit dieser Tabelle beitreten

SELECT h.Period, DATEPART(dd,d.EntryTime) as Day, 1 as Value 
FROM DayHour h LEFT JOIN <YourData> d ON h.StartHour <=DATEPART(hh,d.EntryTime) and DATEPART(hh,d.EntryTime)<h.EndHour 

Diese Rückkehr wird die ganze zeichnen Sie mit der Zeitperiode auf und wird sogar eine Aufzeichnung zurückgeben, wenn keine Fahrzeuge das Parken während eines bestimmten Zeitrahmens betraten. Ziehen Sie die Spalte "Zeitraum" in den Spaltenabschnitt der Kreuztabelle und die Spalte "Tag" in die Abschnitte "Zeilen". Ziehen Sie die Wertespalte in den Zusammenfassungsabschnitt.