Frage : Einen negativen Spaltenwert bis 0 im SQL-Server einstellen

Ich habe eine Ansicht, die die Geldstrafen für ein verzögertes Bibliotheksbuch berechnet. Die Logik, die verwendet wird, ist Überprüfung das Nr. des Tages zwischen dem DUE_DATE und dem Tagesdatum und multipliziert es mit einem FINE_AMOUNT.

Now die Ausgabe, die ich bin einer der Spalte bin negativ habe, da Abgabefrist grösser als heutiges Datum ist. Sehen, dass mein angebrachter script.

My Hinweis dieser Code im view
ist (DATEDIFF (DD, DUE_DATE, getdate ()) * FINE_PRICE) ALS FINE_AMOUNT
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
--ANSICHT [dbo] ÄNDERN. [LIBRARY_LOAN_REGISTRATION_VIEW]
--WIE
Auserwählt
	LLR.ID,
	ISNULL (LLR.LIBRARY_ID, - 1) ALS LIBRARY_ID,
	ISNULL (LC.LIBRARY_NAME, '') ALS LIBRARY_NAME,
	ISNULL (LC.FINE_PRICE, 1) ALS FINE_PRICE,
	ISNULL (LLR.ASSET_ID, - 1) ALS ASSET_ID,
	ISNULL (LR.TITLE, '') ALS TITEL,
	ISNULL (LLR.LOANER_ID, - 1) ALS LOANER_ID,
	FALL LOANER_ID
         WENN 1 DANN ISNULL (STUDENT_REG.FIRST_NAME, '') + ''+ ISNULL (STUDENT_REG.LAST_NAME, '')
         WENN 2 DANN ISNULL (TEACHER.FIRST_NAME, '') + ''+ ISNULL (TEACHER.LAST_NAME, '')
         WENN 3 DANN ISNULL (ADMINISTRATOR.FIRST_NAME, '') + ''+ ISNULL (ADMINISTRATOR.LAST_NAME, '')
         WENN 4 DANN ISNULL (PRINCIPAL.FIRST_NAME, '') + ''+ ISNULL (PRINCIPAL.LAST_NAME, '')
		 WENN 5 DANN ISNULL (PARENT.FIRST_NAME, '') + ''+ ISNULL (PARENT.LAST_NAME, '')
    ENDE ALS LOANER_NAME,	
	ISNULL (LLR.LOANER_TYPE_ID, - 1) ALS LOANER_TYPE_ID,
	ISNULL (BEKEHRTER (varchar, LLR.LOAN_DATE, 106), '') ALS LOAN_DATE, 
	ISNULL (BEKEHRTER (varchar, LLR.DUE_DATE, 106), '') ALS DUE_DATE, 
	ISNULL (BEKEHRTER (varchar, LLR.RETURN_DATE, 106), '') ALS RETURN_DATE, 
	DATEDIFF (DD, DUE_DATE, getdate ()) ALS NUM_OF_DAY_LATE,
	ISNULL (LLR.LENDING_STATUS_ID, - 1) ALS LENDING_STATUS_ID,
	(DATEDIFF (DD, DUE_DATE, getdate ()) * FINE_PRICE) ALS FINE_AMOUNT,
 	ISNULL (LKLS.NAME, '') ALS LENDING_STATUS
	 
VON
	dbo.LIBRARY_LOAN_REGISTRATION LLR GELASSEN ÄUSSER VERBINDEN
	dbo.LIBRARY_CONFIGURATION LC AUF LLR.LIBRARY_ID=LC.ID GELASSEN ÄUSSER VERBINDEN
	dbo.LIBRARY_REPOSITORY LR AUF LLR.ASSET_ID=LR.ID GELASSEN ÄUSSER VERBINDEN
	dbo.LIBRARY_KEYWORD_LENDING_STATUS LKLS AUF LLR.LENDING_STATUS_ID=LKLS.KEYWORD_ID GELASSEN ÄUSSER VERBINDEN
	dbo.STUDENTS_REGISTRATION_VIEW ALS STUDENT_REG AUF LLR.LOANER_ID = STUDENT_REG.ID UND LLR.LOANER_ID = 1 GELASSEN ÄUSSER VERBINDEN	
	dbo.STAFF_REGISTRATION_VIEW ALS LEHRER AUF LLR.LOANER_ID = TEACHER.ID UND LLR.LOANER_ID = 2 VERLIESS ÄUSSER VERBINDEN    
	dbo.STAFF_REGISTRATION_VIEW ALS VERWALTER AUF LLR.LOANER_ID = ADMINISTRATOR.ID UND LLR.LOANER_ID =3 VERLIESS ÄUSSER VERBINDEN    
	dbo.STAFF_REGISTRATION_VIEW ALS DIREKTION AUF LLR.LOANER_ID = PRINCIPAL.ID UND LLR.LOANER_ID = 4 VERLIESS ÄUSSER VERBINDEN    
	dbo.PARENT_REGISTRATION_VIEW ALS ELTERNTEIL AUF LLR.LOANER_ID = PARENT.ID UND LLR.LOANER_ID = 5
GEHEN

ANSI_NULLS BEGINNEN
GEHEN
QUOTED_IDENTIFIER BEGINNEN
GEHEN

Antwort : Einen negativen Spaltenwert bis 0 im SQL-Server einstellen

FALL, WENN DATEDIFF (DD, DUE_DATE, getdate ()) <� 0="" Then="" 0="" ELSE="">(DATEDIFF (DD, DUE_DATE, getdate ()) * FINE_PRICE) ENDE ALS FINE_AMOUNT,
Weitere Lösungen  
 
programming4us programming4us