>Utilizzo SQL Server della Microsoft
Bene, allora osserva il seguente esempio:
USE tempdb;
CREATE TABLE dbo.foo(
ID int NOT NULL PRIMARY KEY,
Oggetto varchar(10) NOT NULL,
Importo_Base int NOT NULL,
Importo_Auth int NULL
);
INSERT dbo.foo VALUES
(1, 'Penna', 100, 90)
, (2, 'Gomma', 90, NULL)
, (3, 'Lapis', 30, 40)
, (4, 'Carta', 120, 0);
SELECT
Oggetto
, CASE COALESCE(Importo_Auth, 0)
WHEN 0 THEN Importo_Base
ELSE Importo_Auth
END AS Importo
FROM dbo.foo;
/* Output:
Oggetto Importo
---------- -----------
Penna 90
Gomma 90
Lapis 40
Carta 120
(4 row(s) affected)
*/
DROP TABLE dbo.foo;
Come puoi vedere il problema si risolve con una banale CASE: quando Importo_Auth è uguale a zero considera Importo_Base, altrimenti Importo_Auth.
Dato che Importo_Auth può assumere il (non) valore NULL, la funzione COALESCE fa in modo di restituire zero quando la colonna non è valorizzata, riducendo in sostanza le 2 condizioni ad una sola: il test del valore 0
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org