2013-07-16 11 views
6

Jestem numerem seryjnym przy raportowaniu, ale linie poziome z sumami częściowymi. Mam zestaw danych, który obejmuje czas spędzony przez samochody na parkingu. Muszę sporządzić tabelę przedstawiającą kolumnę dla każdej godziny i rzędu dla każdego dnia, pokazującą liczbę wpisów o określonej godzinie w danym dniu.Jak uzyskać raport przestawny w programie Crystal Reports for Visual Studio?

Ułatwiłbym to sobie w projektancie RDLC, z jego kolumnowymi grupami, ale nie mogę nawet znaleźć czegoś takiego w Crystal.

Pomoc.

+0

Czy próbowałeś cross-tab? – craig

Odpowiedz

3

Zakładając następujących dziedzinach: {table.car_id} i {table.census_time}

  • Wybierz Wstaw | Crosstab ...; dodać krzyżowego kartę zgłosić-header sekcja

Kliknij prawym przyciskiem cross-kartę i wybrał 'przekrój eksperta zakładce':

  • Dodaj {table.census_time] do listy kolumny pola; grupa po godzinie
  • Dodaj {table.census_time} do listy wierszy; grupa według dnia
  • Dodaj {table.car_id} do listy podsumowań; liczyć

** Edycja **

Nie trzeba stworzyć specjalną formułę, aby wyodrębnić godzina z pola daty/czasu; Krzyżówka zrobi to za Ciebie.

enter image description here Wybierz zakładkę "Krzyżówka", dodaj pole {table.census_time}, a następnie kliknij przycisk "Opcje grupy ...".

enter image description here

Wybierz "za każdą godzinę. z listy wyboru.

+0

jak to zrobić? grupować kolumny według godziny? Czy to druga karta, Opcje grupy, Użyj formuły jako nazwy grupy? Tam próbuję zastosować formułę 'Hour ({table.census_time])' i mówi mi, że wystąpił błąd, "Pozostały tekst nie wydaje się być częścią formuły". – ProfK

1

Trzeba utworzyć tabelę z rekordem za każdą godzinę:

Tabela 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 

Następnie opuścił dołączyć swoje dane z tej tabeli

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 

ten powróci wszystko rekord z okresem czasu i zwróci nawet rekord, jeśli żadne pojazdy nie weszły na parking w określonym przedziale czasowym. Przeciągnij i upuść kolumnę Period do sekcji kolumny zakładki "Krzyżyk" i "Kolumna" do sekcji "Wiersze". Przeciągnij kolumnę Wartość do sekcji podsumowania.

Powiązane problemy