2014-12-07 13 views
5

Sto tentando di creare un'istruzione SQL, che calcola quanti giorni una consegna di prodotti non consegnati è in ritardo rispetto alla data corrente. Il risultato dovrebbe mostrare il numero dell'ordine, la data dell'ordine, il numero del prodotto e il numero di giorni di ritardo per le righe dell'ordine in cui il numero di giorni di ritardo supera i 10 giorni.Tentativo di mostrare una data maggiore di dieci giorni

Qui è la mia dichiarazione di SQL finora:

SELECT 
    Orderhuvuden.ordernr, 
    orderdatum, 
    Orderrader.produktnr, 
    datediff(day, orderdatum, isnull(utdatum, getdate())) as 'Delay days' 
FROM 
    Orderhuvuden 
JOIN 
    Orderrader ON Orderhuvuden.ordernr = Orderrader.ordernr AND utdatum IS NULL 

Quello che ho un problema con è quello di risolvere come mostrare i giorni ritardo che supera i 10 giorni. Ho provato ad aggiungere qualcosa del tipo:

WHERE (getdate() - orderdatum) > 10 

Ma non funziona. Qualcuno sa come risolvere questo ultimo passo?

risposta

9

aggiungere questo al tuo clausola WHERE:

AND DATEDIFF(day, orderdatum, getdate()) > 10 
1

A me sembra che tu abbia bisogno di aggiungere questo alla vostra clausola WHERE.

datediff(day, orderdatum, isnull(utdatum, getdate())) > 10 
1

Se la condizione che si desidera è:

WHERE (getdate()-orderdatum) > 10 

semplicemente riscrivere questo come:

WHERE orderdatum < getdate() - 10 

Oppure:

WHERE orderdatum < dateadd(day, -10, getdate()) 

Questi sono anche "sargable" che significa di un indice su orderdatum può essere utilizzato per la query.

Problemi correlati