giovedì 13 marzo 2008

CASE - WHEN in SQL

Ho scoperto questo operatore che non avevo ancora incontrato:
select name,
CASE type
WHEN 1 THEN 'private customer'
WHEN 2 THEN 'public customer'
WHEN 3 THEN 'reseller'
ELSE 'unknown'
END
from Agenda

WITH in SQL

Spesso in una query di SQL si ha bisogno di un risultato da utilizzare per varie operazioni.
Anzichè ricalcolare sempre tutto il risultato ogni volta si può utilizzare questa forma:
WITH tempTable(id,name)
as
(
select idUtente, NomeUtente from Utenti
where Affilizazione < @data
)

select * from tempTable.
....
....

Questa funzione è molto potente perchè riduce i tempi di elaborazione dello script.
Da ricordare che WITH deve essere preceduto da GO o dal punto e virgola (';') se prima di WITH c'è un'altra query.