IF o CASE in colonna calcolata

lunedì 02 agosto 2010 - 11.44
Tag Elenco Tags  Visual Studio Express  |  SQL Server 2008  |  SQL Server Express

alexmed Profilo | Guru

Ciao a tutti,
Vorrei sapere se è possibile utilizzare in una colonna calcolata il CASE o l'IF.
Mi spiego un pochino meglio:
Nella colonna "D" di una tabella vorrei il risultato della colonna "A" + la colonna "B" ma solo ed esclusivamente SE la colonna "C" è True
Se la colonna "C" è False allora la colonna "D" deve poter ospitare il valore che dico io.

Es.
A - B - C - D
1 - 1 - True - 2
2 - 3 - False - "Pippo" (Pippo non è a caso perchè nella colonna "D" dovrei mettere dei dati di tipo nvarchar())

Se può fà?

Grazie

alexmed

lbenaglia Profilo | Guru

>Se la colonna "C" è False allora la colonna "D" deve poter ospitare
>il valore che dico io.
No, una colonna calcolata è virtuale pertanto non potrai memorizzare un valore esplicito.

>Grazie
Prego.

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

alexmed Profilo | Guru

Ok grazie.
Lo immaginavo ma mi era venuto il sospetto leggendo questo articolo:

http://www.dotnethell.it/articles/ADOChildTables.aspx

Ciao

alexmed

alexmed Profilo | Guru

Ho risolto in questo modo
Ho aggiunto una colonna dove metto il mio dato.
Nel caso che la condizione sia True faccio la somma (o concatenazione) di A e B, se C è False allora riporto il mio dato

A - B - C - D - E
X - 1 - True - NULL - X1
X - 1 - False - mio dato Y - mio dato Y

Quindi:

CASE [C] WHEN 'True' THEN (A + B)*** WHEN 'False' THEN [D]

*** Con i relativi CONVERT

La formula è scritta al volo quindi potrebbe essere errata ma nel mio caso sembra funzionare.

Ciao



alexmed
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