Questa query per access come deve essere per sql 2005?

giovedì 11 gennaio 2007 - 10.34

allicavalli Profilo | Newbie

SELECT DISTINCT IIf(Year([Data Definizione]) Is Null,Year(Date()),Year([Data Definizione])) AS SceltaAnno FROM T_Rating;

ho provato con

SELECT DISTINCT IIf(Year([Data_Definizione]) = Is Null,{Year(Date()),Year([Data_Definizione])}) AS SceltaAnno FROM dbo.Rating ;

ma mi dice errore di sintassi vicino "Is".

grazie

biggiu Profilo | Junior Member

Ciao,

per quel poco che so, i campi da passare su una query debbono essere compresi tra apici, quindi

Null deve essere passato come 'Null'

Questo e' un banale esempio di query per Sql

SELECT *
FROM AXANTRCA
WHERE (atc_oper = 'NULL')

Buona Giornata e Buon Lavoro
BigGiu

alx_81 Profilo | Guru

>SELECT DISTINCT IIf(Year([Data Definizione]) Is Null,Year(Date()),Year([Data
>Definizione])) AS SceltaAnno FROM T_Rating;
>
Ciao,
devi utilizzare la funzione ISNULL(campo, valore)
http://msdn2.microsoft.com/en-us/library/ms184325.aspx


SELECT DISTINCT ISNULL(Year([Data Definizione]),Year(GETDATE())) As SceltaAnno FROM T_Rating;

mi permetto di aggiungere un consiglio..
non lasciare lo spazio nel nome dei campi altrimenti sei obbligato ad utilizzare le parentesi quadre, che di certo non migliorano la leggibilità del tuo codice..

ciao!

Alx81 =)

http://blogs.dotnethell.it/suxstellino

allicavalli Profilo | Newbie

ho provato con gli apici ma non cambia nulla....

alx_81 Profilo | Guru

>ho provato con gli apici ma non cambia nulla....

Il discorso degli apici non c'entra con il valore NULL..
NULL è NULL..

La funzione ISNULL ti permette proprio di valutare il campo passatole, e se quest'ultimo è NULL allora viene restituito il valore indicato come secondo parametro.

La query di biggiu, ricava records solo se nel campo indicatoo nella Where c'è la STRINGA 'NULL'.. non se c'è NULL..
sono cose completamente diverse..
Alx81 =)

http://blogs.dotnethell.it/suxstellino

allicavalli Profilo | Newbie

grazie mille, ho risolto.

lbenaglia Profilo | Guru

>SELECT DISTINCT IIf(Year([Data Definizione]) Is Null,Year(Date()),Year([Data
>Definizione])) AS SceltaAnno FROM T_Rating;

Ciao allicavalli,

Il Transact-SQL non dispone della funzione IIf() ma la puoi sostituire con la funzione CASE():

SELECT DISTINCT YEAR( CASE WHEN [Data Definizione] IS NULL THEN CURRENT_TIMESTAMP ELSE [Data Definizione] END ) AS SceltaAnno FROM T_Rating;

In alternativa puoi ricorrere alle funzioni ISNULL() o COALESCE():

SELECT DISTINCT YEAR(ISNULL([Data Definizione], CURRENT_TIMESTAMP)) AS SceltaAnno FROM T_Rating; SELECT DISTINCT YEAR(COALESCE([Data Definizione], CURRENT_TIMESTAMP)) AS SceltaAnno FROM T_Rating;

Se sei curioso di coscere alcuni dettagli su questi comandi, ti rimando ad un articolo di Aaron:

"Should I use COALESCE() or ISNULL()?"
http://databases.aspfaq.com/database/coalesce-vs-isnull-sql.html

Per maggiori informazioni consulta i seguenti paragrafi sui Books Online:

"CASE (Transact-SQL)"
http://msdn2.microsoft.com/it-it/library/ms181765.aspx

"ISNULL (Transact-SQL)"
http://msdn2.microsoft.com/it-it/library/ms184325.aspx

"COALESCE (Transact-SQL)"
http://msdn2.microsoft.com/it-it/library/ms190349.aspx

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

alx_81 Profilo | Guru

>grazie mille, ho risolto.

se ritieni che le nostre risposte ti abbiano aiutato, ti chiedo di accettarle con l'apposito link così chiudiamo il thread!!
ciao!

Alx81 =)

http://blogs.dotnethell.it/suxstellino
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5