Mietdauer berechnen

SIMSALABIM

Benutzer
Beiträge
11
Ich hab einmal die Spalten Miet_Anfang und Miet_Ende und möchte die Mietdauer pro Apartment und Gebäude mir anzeigen lassen.
DateDiff("m",Miet_Anfang,Miet_Ende)
Soweit sogut nur sind 3 Felder bei Miet_Ende ungefüllt. Bei zweien handelt es sich wahrscheinlich noch um aktuelle Mieter und in einer Zeile ist Anfang und Ende nicht gefüllt. Würde das gerne noch weiter in meiner Abfrage möglichst logisch mit einberechnen.

Eine Idee ist das ganze mit IIF und ISNULL und Now() zu kombinieren aber krieg das nicht sauber gebaut.
Wäre dankbar für jegliche Unterstützung
 
Werbung:
was willst Du denn annehmen, wenn der Start leer ist? Wenn Ende leer ist, dann wohnt er wohl noch da, dann kannst Du ja das aktuelle Datum nehmen, oder?

Code:
test=*# select * from miete;
id |  start  |  ende  
----+------------+------------
  1 | 2016-01-01 | 2016-05-31
  2 | 2016-04-01 |
  3 |  |
(3 Zeilen)

test=*# select *, coalesce(ende, current_date) - start from miete;
id |  start  |  ende  | ?column?
----+------------+------------+----------
  1 | 2016-01-01 | 2016-05-31 |  151
  2 | 2016-04-01 |  |  71
  3 |  |  |  
(3 Zeilen)
test=*# select *, age(coalesce(ende, current_date), start) from miete;
id |  start  |  ende  |  age  
----+------------+------------+----------------
  1 | 2016-01-01 | 2016-05-31 | 4 mons 30 days
  2 | 2016-04-01 |  | 2 mons 10 days
  3 |  |  |
(3 Zeilen)

(PostgreSQL, kein Access)
 
Wenn der Start leer ist wohnt einfach keiner in diesem Objekt. Die Funktion Coalesce hat access wahrscheinlich nicht. Bin jetzt etwas weiter gekommen und versuch nur beide Funktionen zu vereinen also
SELECT IIF(ISNULL(Miet_Ende),Now(),Miet_Ende) das kombiniert mit Monats_Anfang
 
Code:
test=*# select *, coalesce(age(coalesce(ende, current_date), start)::text,'frei') from miete;
 id |  start  |  ende  |  coalesce   
----+------------+------------+----------------
  1 | 2016-01-01 | 2016-05-31 | 4 mons 30 days
  2 | 2016-04-01 |  | 2 mons 10 days
  3 |  |  | frei
(3 Zeilen)

Coalesce() gibt es auch in anderen Systemen, ich glaube sogar in mysql.
 
Da ich mit Access arbeite gibt es diese Funktion bei mir nicht aber ich versuch das bissel für mich zu übersetzen aber bis jetzt ohne Erfolg muss ich gestehen.
 
Also in MSSQL wäre es
Code:
DateDiff("m",Miet_Anfang,isnull(Miet_Ende,getdate()))
und Miet_Anfang IS NULL könnte man auch im WHERE gleich raus lassen.
 
Okay ich habe eine Rückmeldung bekommen. Einma heißt es, ich soll bitte nicht die DateDiff Funktion benutzen weil es einfacher geht und wir das nicht in der Vorlesung vorgenommen haben. Irgendwelche Ideen
 
Werbung:
Du kannst das sicherlich auch anders lösen, ein bischen beschränkt finde ich die Begründung aber schon. Aus meiner Sicht wäre datediff() in jedem Fall die saubere Lösung. Du kannst aber auch durch subtrahieren abbilden, einfach ein Datum von dem andern Datum abziehen. Mit IF prüfst du dann, ob der End-Wert NULL ist.
 
Zurück
Oben