Ich schrieb diese Abfrage zum Einfügen von Daten zu Att_process Tabelle checkin_time Feld.Datepart Funktion mit If Bedingung
Wenn die CHECKINOUT Tabelle CHECKTIME Feld Hours Wert < 12, sollte es einsetzen, um CHECKINOUT Tabelle CHECKIN_TIME Field. Und wenn sie größer als 12 sollte es einsetzen, um CHECKINOUT Tabelle CHECKOUT_TIME Feld
Aber es funktioniert nicht, können Sie mir helfen, das herauszufinden, und ich weiß auch nicht, wie zu setzen Dies auf einen Trigger, wenn Sie mir helfen können, werde ich es wirklich zu schätzen wissen.
IF (DATEPART(HOUR,CHECKTIME) < 12)
BEGIN
INSERT INTO Att_process(USERID,checkin_time)
SELECT CHECKINOUT.USERID,CHECKINOUT.CHECKTIME
from CHECKINOUT
where DATEPART(HOUR,CHECKTIME) < 12;
END
ELSE
BEGIN
INSERT INTO Att_process(USERID,checkout_time)
SELECT CHECKINOUT.USERID,CHECKINOUT.CHECKTIME
from CHECKINOUT
where DATEPART(HOUR,CHECKTIME) >= 12;
END
entsprechend ändern, wenn der andere Wert in der Tabelle null ist, kann man einfach das tun, ohne ein IF-Anweisung: z INSERT Att_process (USERID, checkin_time, checkout_time) SELECT USERID, FALL WENN DATEPART (STUNDE, CHECKTIME) <12 THEN CHECKTIME END, FALL WENN DATEPART (STUNDE, CHECKTIME)> = 12 THEN CHECKTIME END FROM CHECKINOUT), aber dies würde separate Datensätze erzeugen für eine Benutzer-ID ein- und auschecken. Wenn es nur zwei Einträge pro Benutzer-ID gibt (Ein- und Auschecken), können Sie MAX (CASE ... – ZLK
) tun. Vermutlich ist der Grund, warum es nicht funktioniert, weil Sie in Ihrer IF-Anweisung CHECKTIME nirgendwo auswählen ... Es sei denn, es ist nur ein Beispiel und es funktioniert nicht aus einem anderen Grund. – ZLK
Woher bekommen Sie diesen Parameter Wert? => CHECKTIME –