>Sto tentanto di fare una case nella clausula where
>
>WHERE
> VAL.FK_ID_ENTE = 1
> AND AGGR_PROC_STR.ID_PROC_STR = 1
> AND VAL.FK_MESE = 6
> AND AGGR.STEP IN(
> CASE @TIPO_ANALISI
> WHEN 'A' THEN
> CASE @PILASTRO
> WHEN 1 THEN 1
> WHEN 2 THEN 2, 3
> END
> END
>)
>
>Mi va logicamente in errore al punto WHEN 2 THEN 2, 3 come posso
>risolvere?
Io farei proprio in un altro modo. Visto che sembra essere SQL Server, farei una stored procedure come quella che segue:
CREATE PROC dbo.proc_ProvaCase
@TIPO_ANALISI char(1)
, @PILASTRO tinyint
AS
BEGIN
SET NOCOUNT ON;
DECLARE @temp TABLE (pilastro tinyint)
IF @TIPO_ANALISI = 'A'
IF @PILASTRO = 1
INSERT INTO @temp (pilastro) VALUES (1)
ELSE
IF @PILASTRO = 2
BEGIN
INSERT INTO @temp (pilastro) VALUES (2)
INSERT INTO @temp (pilastro) VALUES (3)
END
-- qui fai la tua select
/*
SELECT <campi>
FROM <tabella>
WHERE
VAL.FK_ID_ENTE = 1
AND AGGR_PROC_STR.ID_PROC_STR = 1
AND VAL.FK_MESE = 6
AND AGGR.STEP IN(SELECT pilastro FROM @temp)
oppure puoi andare in join con @temp direttamente.
*/
END
>Grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org