Es gibt keine Spalte Tanks in Deinem Statement. Ich nehme an Du meinst die Spalten, die nach den individuellen Tanks benannt sind.
Ich rate mal oder sagen wir so, ich würde es nie absichtlich so "bequem" machen. Schon gar nicht bei einem Union, wo man die Typen einhalten muss.
Lange Erklärung:
Du hast in allen 3 Tanks Spalten die Case Statements. Das könnte eine Copy / Paste Lösung sein oder Du hast verstanden, was da passiert. Du erzeugst fallweise (oder spaltenweise) ein Ergebnis, das mehrzeilig ist und kannst es anschließend per Aggregatfunktion (max) zu einer Zeile zusammenfassen. Die Case Formulierung ist in Deinem Statement etwas schlampig / sparsam. Case ist außerdem etwas "gemein", weil es durch beliebige Fallunterscheidung mit individuellen Ausgabewerten auch individuelle AusgabeTYPEN produzieren kann:
Code:
..case when 'heute' then getdate()
case when 'morgen' then 1
case when 'jetzt' then jetzt
case when 'mirdochegal' then '42'
...
Würde so kein Mensch machen, aber Du bist nah dran. Obwohl Du die Konvertierung machst.
In Deinem Statement fehlt der ELSE Teil- wie in meinem Beispiel. Er findet aber statt! "da kommt ja sowieso nichts raus", könnte man meinen, ist ja auch so, man produziert ein NULL Ergebnis. Aber von welchem Typ?
Hättest Du eine Datenbank entwickelt und das Case When Statement implementiert, welchen Typ hättest Du dem Ergebnis verpasst?
kurze Antwort:
Versuch mal, ein Else dazu mit Convert oder direkt ein Convert um das ganze Case Ergebnis, eben nicht nur im Then Teil.
Und unabhängig davon ob das die Lösung ist.
Man sollte sich nie auf implizite Typkonvertierung verlassen. (Und man muss vielleicht ein wenig üben, um es nicht unabsichtlich zu machen)