2013-07-16 10 views
6

Sono un rank noob in qualsiasi report, ma linee orizzontali con sub-totali. Ho un set di dati che comprende i tempi trascorsi dalle auto in un parcheggio. Devo produrre una tabella che mostri una colonna per ogni ora e una riga per ogni giorno, mostrando il numero di voci in un determinato momento in un particolare giorno.Come si ottiene un rapporto pivot in Crystal Reports per Visual Studio?

avrei trovato questo più facile nella finestra di progettazione RDLC, con i suoi gruppi colonnari, ma non riesco nemmeno a trovare una cosa del genere in cristallo.

Help.

+0

Hai provato un cross-tab? – craig

risposta

3

Assumendo i seguenti campi: {table.car_id} e {table.census_time}

  • scegliere Inserisci | A campi incrociati ...; aggiungere campi incrociati a riferire-header sezione

Fare clic destro del campo incrociato e ha scelto 'croce esperto scheda':

  • Aggiungere {table.census_time] per l'elenco delle colonne campo; gruppo per ora
  • Aggiungere {table.census_time} all'elenco dei campi di riga; gruppo di giorno
  • aggiungere {table.car_id} all'elenco dei campi di riepilogo; contare

** Modifica **

Non è necessario creare una formula speciale per estrarre l'ora dal campo data/ora; il cross-tab lo farà per te.

enter image description here Selezionare la scheda "Cross-Tab", aggiungere il campo {table.census_time}, quindi fare clic sul pulsante "Opzioni gruppo ...".

enter image description here

Scegli 'per ogni ora.' dalla lista

+0

come faccio ad es. raggruppare le colonne per ora? È la seconda scheda, Opzioni gruppo, Usa formula come nome gruppo? Lì provo ad applicare la formula 'Hour ({table.census_time))' e mi dice che c'è un errore, "Il testo rimanente non sembra essere parte della formula". – ProfK

1

È necessario creare una tabella con un record per ogni ora:

Tabella 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 

Poi a sinistra ai tuoi dati con questo tavolo

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 

Ciò restituirà tutte le registrare con il periodo di tempo e restituirà anche un record se nessun veicolo è entrato nel parcheggio durante un periodo di tempo specifico. Trascina e rilascia la colonna Periodo nella sezione colonna della scheda incrociata e la colonna Giorno nelle sezioni Righe. Trascina la colonna Valore nella sezione di riepilogo.

Problemi correlati