Uso la seguente query in un applicativo VB .NET su DB Access (non linked tables) e funziona.
SELECT AVG(?-DataNascita) AS AverageAge
FROM Anagdip A,CentridiCosto B,StatoCollaboratore C
WHERE A.Stato=C.Stato AND A.CentroCosto=B.CentroCosto AND IsEmployee AND NOT Hidden AND DataAss<=? AND (DataCess IS NULL OR DataCess>=?);
Poi ho importato il DB Access in SQL SERVER 2016 e le tabelle sono state sostituite da tabelle collegate.
Il tutto fatto con l'utility SSMA che funziona molto bene.
La stessa select fatta sul DB Access con le tabelle collegate mi genera un errore di type mismatch.
l'applicazione è sempre la stessa cambio solo il DB access cui si collega; i dati presenti nel DB stand-alone e in quello con le tabelle collegate sono gli stessi.
Ho provato ad eseguirla direttamente in ambiente SQL Server (quindi escludendo l'applicazione) e ottengo lo stesso errore.
La media che desidero ricavare è basata su date e in particolare è la media delle differenze tra una data assegnata (il parametro) e la data di nascita dell'impiegato (presa dal campo DataNascita della tabella AnagDip). La query senza i parametri sarebbe:
SELECT AVG(#07/31/2018#-DataNascita) AS AverageAge
FROM Anagdip A,CentridiCosto B,StatoCollaboratore C
WHERE A.Stato=C.Stato AND A.CentroCosto=B.CentroCosto AND IsEmployee AND NOT Hidden AND DataAss<=#07/31/2018# AND (DataCess IS NULL OR DataCess>=#07/01/2018#);
Penso che il problema sia che SQL SERVER permette query con AVG(dati_numerici) e non con differenze tra date. Vorrei quindi sostituire l'espressione dell AVG con una differenza che sia espressa in giorni mo non riesco a trovare la sintassi corretta.
avete un'idea su come si possa modificare la query?
Grazie
Stefano