Question : Question pour grouper des données clairsemées ?

Bonjour, le

I ont un client qui est venu chez moi avec une demande d'une question que je n'ai avant jamais essayée.  le

Certainly je pourrais employer VBA pour venir à bout le faire avec le SQL plutôt facilement, mais ils veulent une solution de SQL le class= que without changeant la structure de leur table.

Here est la disposition de table : le

ID Column1 Column2 Column3 Column4 Column5… etc…
1 0 0 5 0 0
2 7 0 0 2 0
3 1 2 3 0 0
… etc…

They veulent que la question produise pour ressembler à ainsi : type de type 1 du

ID - 2 Type3
1 5 0 0
2 7 2 0
3 1 2 3

I pourraient également écrire une chaîne méchante vraiment longue des rapports d'IIF, mais je recherche quelque chose beaucoup plus élégante.  (Là environ 30 sont-elles colonnes) des pensées du

Any ?

-Torrwin
class= de

Réponse : Question pour grouper des données clairsemées ?

1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
Avec ee26366939 comme table basse avec l'identification, Col1, Col2, Col3, Col4, Col5
Et deux questions d'aide

q26366939 :

CHOISI
Identification,
IIF (Col1=0, nulle, Col1) COMME Col1a,
IIF (Col2=0, nulle, Col2) COMME Col2a,
IIF (Col3=0, nulle, Col3) COMME Col3a,
IIF (Col4=0, nulle, Col4) COMME Col4a,
IIF (Col5=0, nulle, Col5) COMME Col5a
D'ee26366939 ;

q26366939a :

CHOISI
Identification,
nz (Col1a/Col1a, 0) comme Col1b,
nz (Col1a/Col1a, 0) +nz (Col2a/Col2a, 0) comme Col2b,
nz (Col1a/Col1a, 0) +nz (Col2a/Col2a, 0) +nz (Col3a/Col3a, 0) comme Col3b,
nz (Col1a/Col1a, 0) +nz (Col2a/Col2a, 0) +nz (Col3a/Col3a, 0) +nz (Col4a/Col4a, 0) comme Col4b,
nz (Col1a/Col1a, 0) +nz (Col2a/Col2a, 0) +nz (Col3a/Col3a, 0) +nz (Col4a/Col4a, 0) +nz (Col5a/Col5a, 0) comme Col5b
De q26366939 ;

La question finale peut être écrite ainsi :

CHOISI
A.ID,
IIF (Col1B=1, Col1, IIF (Col2b=1, Col2, IIF (Col3b=1, Col3, IIF (Col4b=1, Col4, Col5)))),
IIF (Col1B=2, Col1, IIF (Col2b=2, Col2, IIF (Col3b=2, Col3, IIF (Col4b=2, Col4, Col5)))),
IIF (Col1B=3, Col1, IIF (Col2b=3, Col2, IIF (Col3b=3, Col3, IIF (Col4b=3, Col4, Col5)))),
IIF (Col1B=4, Col1, IIF (Col2b=4, Col2, IIF (Col3b=4, Col3, IIF (Col4b=4, Col4, Col5)))),
IIF (Col1B=5, Col1, IIF (Col2b=5, Col2, IIF (Col3b=5, Col3, IIF (Col4b=5, Col4, Col5))))
D'ee26366939 COMME A
intérieur joindre q26366939a comme B sur A.ID=B.ID ;
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us