ADODB: Variabler Spaltenname in SQL-Statement
25.01.2016 20:19:56
Alex
ich hab mal wieder eine Frage aus dem SQL-Universum. Ist eigentlich ein generelles SQL-Problem, aber da das Office-Bordmittel ADODB zudem einen sehr eigenen SQL-Dialekt spricht, passt es hier sicher ganz gut...
Ziel der ganzen Übung: Umsätze pro Mitarbeiter und Jahr ausgeben lassen, zusätzlich die Direktion in dem entsprechenden Jahr.
Ich habe dazu folgende drei Tabellen:
Tabelle 1 (Mitarbeiter/Direktion): "MAZuordn"
MA1 Direktion DirVon DirBis
Alfred Süd 2000 2001
Alfred Nord 2002 2016
Bertram Süd 2001 2016
Tabelle 2 (Mitarbeiter/Umsätze): "MAUmsatz"MA2 J2000 J2001 J2002 J2003 J2004 ...
Alfred 500 600 600 700 650
Bertram 0 600 600 700 650
Tabelle 3 (Jahre): "MapJahre"JahrNum JahrSpalte
2000 J2000
2001 J2001
2002 J2002
2003 J2003
2004 J2004
Tabelle 2 [MAUmsatz] ist natürlich nicht schön für SQL-Zwecke und wäre mir auch flach lieber (MA2|Jahr|Umsatz). Da ich die Daten aber sehr oft und in genau dieser Struktur neugeliefert bekomme, möchte ich sie aber nicht jedes Mal selbst "verflachen", sondern einfach nur einkopieren. Will heißen: Tabelle 2 muss so bleiben, wie sie ist. Einziger Zweck von Tabelle 3 [MapJahre] ist daher, zu einem bestimmten Jahr die "Jahresspalte" in [MAUmsatz] zu finden.Statement:
SELECT tZuo.MA1,tJhr.JahrNum,tZuo.Direktion,(SELECT tMap.JahrSpalte FROM [MapJahre$] AS tMap WHERE tMap.JahrNum=tJhr.JahrNum) AS UmsatzJahr FROM ([MAZuordn$] AS tZuo INNER JOIN [MAUmsatz$] AS tUms ON tZuo.MA1=tUms.MA2),[MapJahre$] AS tJhr WHERE tZuo.DirVon=tJhr.JahrNum ORDER BY tZuo.MA1,tJhr.JahrNum
Resultierender Fehler: Es wird nicht die Spalte J20xx abgegriffen, sondern nur der Spaltenname wird hart eingefügt:
MA1 JahrNum Direktion UmsatzJahr
Alfred 2000 Süd J2000
Alfred 2001 Süd J2001
Alfred 2002 Nord J2002
Alfred 2003 Nord J2003
Alfred 2004 Nord J2004
Bertram 2001 Süd J2001
Bertram 2002 Süd J2002
Bertram 2003 Süd J2003
Bertram 2004 Süd J2004
Wie muss ich das innere Select-Statement anpassen/umschreiben, damit in UmsatzJahr tatsächlich die Jahresumsätze aus Tabelle 2 [MAUmsatz] stehen? tUms.(...) ist es jedenfalls nicht, tUms.COLUMN(...) auch nicht.Viele Grüße
Alex