Press "Enter" to skip to content

Un paio di Tips su TSQL

Oggi stavo traslando una query da Postgres a TSQL e ho dovuto traslare qualcosa che non avevo mai fatto in sql server, perciò annoto qui il come si fa per futura memoria ringraziando ChatGPT che mi ha dato una mano a trovare le corrispondenze.

-- Come si calcola la differenza in ore decimali fra due date in T-SQL
round (isnull( DATEDIFF(MINUTE, dataInizio, dataFine), 0) / 60.0, 2) as totaleOre
-- Il fatto che io abbia usato un divisore decimale 60.0 ha fatto in modo
-- Che il dato generato fosse decimale, mettendo solo 60 approssima all'intero
-- Come trovare il minimo ed il massimo non NULL di un campo in una query
-- raggruppata
,min(CASE WHEN campoData1 is not null then campoData1 END ) as dataInizio
,max(CASE WHEN campoData2 is not null then campoData2 END) as dataFine
-- Come creare la somma di un campo stringa in una query raggruppata
STRING_AGG([MioCampoStringa],',')
-- Questa funzione esiste da SQL 2017 nelle versioni precedenti era molto più 
-- complicato