2009-03-16 1 views
0

J'ai un site Web utilisant ASP.Net 2.0 avec SQL Server comme base de données et C# 2005 comme langage de programmation. Dans l'une des pages, j'ai un GridView avec la mise en page suivante.GridView Mise en page/sortie

Date -> Time -> QtyUsed 

Les valeurs d'échantillon sont les suivantes: (Depuis ce GridView/rapport est généré pour un mois donné, je l'ai extrait et affiche seulement la partie de jour de la date en ignorant la partie mois et l'année

.
01 -> 09:00 AM -> 05 
01 -> 09:30 AM -> 03 
01 -> 10:00 AM -> 09 
02 -> 09:00 AM -> 10 
02 -> 09:30 AM -> 09 
02 -> 10:00 AM -> 11 
03 -> 09:00 AM -> 08 
03 -> 09:30 AM -> 09 
03 -> 10:00 AM -> 12 

maintenant, l'utilisateur veut la mise en page soit comme:

Time  01 02 03 04 05 06 07 08 09 
------------------------------------------------------------------------- 
09:00 AM -> 05 10 08 
09:30 AM -> 03 09 09 
10:00 AM -> 09 11 12 

l'exigence principale est que les jours devraient être dans l'en-tête de colonne de 01 à la dernière date (la raison pour laquelle J'ai extrait seulement la partie jour de la date). Les intervalles de temps devraient être en rangées. D'après mon expérience avec Excel, l'idée de Transpose me vient à l'esprit pour résoudre ce problème, mais je n'en suis pas sûr.

S'il vous plaît aidez-moi à résoudre ce problème.

Merci.

Lalit Kumar Barik

Répondre

2

Vous devrez générer l'ensemble de données en conséquence. Je devine que vous faites une sorte de regroupement basé sur l'heure alors générez une colonne pour chaque heure de la journée et remplissez l'ensemble de données en conséquence.

+0

Hmmm ... Je suis d'accord avec cette opinion. – Cerebrus

+0

Mais j'ai l'instruction select codée correctement pour récupérer seulement les enregistrements correspondants pour un mois et je ne pense pas qu'un groupe par le temps est nécessaire. Je pense que la fonction Pivot sera une meilleure idée à condition que quelqu'un m'aide en cours de route. – LalitBarik

0

Dans SQL Server, il existe une fonction PIVOT qui peut être utile.

The MSDN article spécifie l'utilisation et donne un exemple.

L'exemple est le suivant

Table DailyIncome ressemble

VendorId IncomeDay IncomeAmount 
---------- ---------- ------------ 
SPIKE  FRI  100 
SPIKE  MON  300 
FREDS  SUN  400 
SPIKE  WED  500 
... 

Pour afficher

VendorId MON   TUE   WED   THU   FRI   SAT   SUN 

---------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- 
FREDS  500   350   500   800   900   500   400 
JOHNS  300   600   900   800   300   800   600 
SPIKE  600   150   500   300   200   100   400 

Utilisez cette sélection

SELECT * FROM DailyIncome 
PIVOT(AVG(IncomeAmount) 
FOR IncomeDay IN 
([MON],[TUE],[WED],[THU],[FRI],[SAT],[SUN])) AS AvgIncomePerDay 

Sinon, vous pouvez sélectionner toutes les données de DailyIncome et construire un DataTable avec les données pivotées. Here is an example.

+0

Je suis plutôt un débutant dans SQL Server et ASP.Net. Est-ce que quelqu'un peut m'aider à utiliser la fonction Pivot? Lalit Kumar Barik – LalitBarik

+0

Mise à jour avec l'exemple. –