Frage : Frage, zum der spärlichen Daten zu gruppieren?

Hallo, haben

I einen Kunden, der zu mir mit einem Ersuchen um eine Frage gekommen, die ich nie vorher versucht.  

Certainly könnte ich VBA verwenden, um um es mit SQL eher leicht tun zu erhalten, aber sie wünschen eine SQL-Lösung, die without die Struktur ihres vorhandenen table.

Here ändernd der Tabellenplan ist:

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 wünschen die Frage ausgeben, um wie so auszusehen:

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

I konnten eine wirklich lange böse Kette der IIF Aussagen auch schreiben, aber ich suche nach etwas viel eleganter.  (Dort sind ungefähr 30 Spalten),

Any Gedanken?

-Torrwin

Antwort : Frage, zum der spärlichen Daten zu gruppieren?

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:
6:
Mit ee26366939 als der niedrigen Tabelle mit Identifikation, Col1, Col2, Col3, Col4, Col5
Und zwei Helferfragen

q26366939:

AUSERWÄHLT
Identifikation,
IIF (Col1=0, Null, Col1) ALS Col1a,
IIF (Col2=0, Null, Col2) ALS Col2a,
IIF (Col3=0, Null, Col3) ALS Col3a,
IIF (Col4=0, Null, Col4) ALS Col4a,
IIF (Col5=0, Null, Col5) ALS Col5a
VON ee26366939;

q26366939a:

AUSERWÄHLT
Identifikation,
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
VON q26366939;

Die abschließende Frage kann folglich geschrieben werden:

AUSERWÄHLT
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))))
VON ee26366939 ALS A
inner q26366939a als B auf A.ID=B.ID verbinden;
Weitere Lösungen  
 
programming4us programming4us