Ich mag es nicht, das gleiche an zwei Stellen definiert zu haben, wenn ich es vermeiden kann.Refaktorierte SQL-Projektion?
Ich erkenne, dass die zwei Abfragen unten mit zwei verschiedenen Tabellen beschäftigen, aber diese Tabellen enthalten im Grunde die gleiche Art von Daten (verschiedene Prädikate rechtfertigen die beiden Abfragen), und ich denke an die beiden Projektionen unten als "das Gleiche definiert an zwei Stellen ".
Wann/wenn ich später diese Abfragen ändern, verschiedene Spalten enthalten, ich bin sicher, dass ich immer werde die Projektionen bleiben identisch wollen.
Daran, und ohne Verwendung von dynamischem SQL, und ohne '*' in einer beliebigen Projektion (in meiner Produktionsumgebung nicht zulässig), kann ich den "columnset" einmal definieren und in beiden Abfragen verwenden?
SELECT columnA
, columnB
, columnC
FROM Data
SELECT columnA
, columnB
, columnC
FROM DataArchive
Sie haben Daten an zwei Stellen gespeichert. Egal, um die Daten, die Sie für einen bestimmten Anruf benötigen, abzurufen, müssen Sie wissen, aus welchem Datenbestand sie abgerufen werden. Die veröffentlichten SELECT ... UNION ALL ... -Lösungen würden nur eine Abfrage benötigen, aber Sie müssten den "Schalter" hinzufügen, um zu steuern, welcher Satz tatsächlich abgefragt wurde. Können Sie das zu Ihrer Codebasis hinzufügen? Ich bevorzuge Blixt's View-Implementierung, aber ich würde auch vorschlagen, die Tabellen in einer Tabelle zu kombinieren. (Es klingt wie eine "aktuelle/kleine/häufig verwendete Menge vs. historische/ginormous/selten verwendete Set" -Situation, aber Sie können nie wissen.) –