Fråga : Query som grupperar glesa data?

Hälsningar

I har en kund som har kommit till mig med en förfrågan för en query, som jag har försökt aldrig för.  

Certainly jag kunde använda VBA för att få runt om att göra den med SQL ganska lätt, men de önskar en SQL-lösning som without som förändrar strukturera av deras existerande table.

Here, är bordläggaorienteringen:
1 0 för

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

They för 0
… etc.… önskar queryen som tillverkas för att se lik så: typ för

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

I kunde också skriva ett jättelångt otäckt, kedjar av IIF-meddelanden, men I-förmiddagen som söker efter något som mycket är mer elegant.  (Där är omkring 30 kolonner), tankar för

Any?

-Torrwin
" klar "

Svar : Query som grupperar glesa data?

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:
Med ee26366939 som basera bordlägga med LEGITIMATIONEN, Col1, Col2, Col3, Col4, Col5
Och två hjälpredaqueries

q26366939:

VALT
LEGITIMATION,
IIF (Col1=0, ogiltigt, Col1) SOM Col1a,
IIF (Col2=0, ogiltigt, Col2) SOM Col2a,
IIF (Col3=0, ogiltigt, Col3) SOM Col3a,
IIF (Col4=0, ogiltigt, Col4) SOM Col4a,
IIF (Col5=0, ogiltigt, Col5) SOM Col5a
FRÅN ee26366939;

q26366939a:

VALT
LEGITIMATION,
nz (Col1a/Col1a, 0) som Col1b,
nz (Col1a/Col1a, 0) +nz (Col2a/Col2a, 0) som Col2b,
nz (Col1a/Col1a, 0) +nz (Col2a/Col2a, 0) +nz (Col3a/Col3a, 0) som Col3b,
nz (Col1a/Col1a, 0) +nz (Col2a/Col2a, 0) +nz (Col3a/Col3a, 0) +nz (Col4a/Col4a, 0) som Col4b,
nz (Col1a/Col1a, 0) +nz (Col2a/Col2a, 0) +nz (Col3a/Col3a, 0) +nz (Col4a/Col4a, 0) +nz (Col5a/Col5a, 0) som Col5b
FRÅN q26366939;

Finalqueryen kan vara skriftlig thus:

VALT
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))))
FRÅN ee26366939 SOM A
inre sammanfoga q26366939a som B på A.ID=B.ID;
Andra lösningar  
 
programming4us programming4us