Vraag : Vraag aan groeps dunne gegevens?

Hello, heeft

I een klant die aan me met een verzoek om een vraag is gekomen die ik nooit voordien heb geprobeerd.  

Certainly ik VBA kon gebruiken om rond het doen van het met SQL te krijgen eerder gemakkelijk, maar zij willen een SQL oplossing without die de structuur van hun het bestaan table.

Here veranderen de lijstlay-out is:

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 wil de vraagoutput kijken als zo: />ID het Type van Type 1

1 5 0 0
2 7 2 0
3 1 2 3

I konden een werkelijk lange smerige ketting van Iif- verklaringen ook schrijven, maar ik zoek iets eleganter.  (Daar ongeveer zijn 30 kolommen) gedachten

Any?

-Torrwin

Antwoord : Vraag aan groeps dunne gegevens?

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:
Met ee26366939 als basislijst met identiteitskaart, Col1, Col2, Col3, Col4, Col5
En twee helpervragen

q26366939:

SELECTEER
Identiteitskaart,
IIF (ongeldige Col1=0, Col1) ALS Col1a,
IIF (ongeldige Col2=0, Col2) ALS Col2a,
IIF (ongeldige Col3=0, Col3) ALS Col3a,
IIF (ongeldige Col4=0, Col4) ALS Col4a,
IIF (ongeldige Col5=0, Col5) ALS Col5a
VAN ee26366939;

q26366939a:

SELECTEER
Identiteitskaart,
nz (Col1a/Col1a, 0) als Col1b,
nz (Col1a/Col1a, 0) +nz (Col2a/Col2a, 0) als Col2b,
nz (Col1a/Col1a, 0) +nz (Col2a/Col2a, 0) +nz (Col3a/Col3a, 0) als Col3b,
nz (Col1a/Col1a, 0) +nz (Col2a/Col2a, 0) +nz (Col3a/Col3a, 0) +nz (Col4a/Col4a, 0) als Col4b,
nz (Col1a/Col1a, 0) +nz (Col2a/Col2a, 0) +nz (Col3a/Col3a, 0) +nz (Col4a/Col4a, 0) +nz (Col5a/Col5a, 0) als Col5b
VAN q26366939;

De definitieve vraag kan zo worden geschreven:

SELECTEER
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))))
VAN EE26366939 ALS A
binnen sluit me aan bij q26366939a als B op A.ID=B.ID;
Andere oplossingen  
 
programming4us programming4us