Gestire i null nelle viste pivot

di il
5 risposte

Gestire i null nelle viste pivot

Chiedo aiuto sto impazzendo non iresco a fa uscire 0 dv e null

ecco il cod chi può aiutarmi ps messo isnull in diverse posizioni ma nulla :-((

declare @COLONNA as nvarchar(max)         -- colonna   INVIO NELLE COLONNE
declare @griglia as nvarchar(max)

select @colonna =isnull(@colonna + ',', '') + QUOTENAME (struttura)
from 
(
select distinct struttura
               from C_SANStorico as S
                where specialisticatetti=0006
) as C order by struttura
  --select @colonna
set @griglia =
  'select invio,catalogo, ''Prestazioni'' as Cliente,'+ @COLONNA +'
from 
(
select struttura,catalogo,specialisticatetti,qprest,invio
from C_SANStorico
Where ProgRiga <> 99 and specialisticatetti=0006
) as T 
PIVOT
(
sum(qprest)
for struttura IN ('+ @COLONNA +')
)as P order by invio,catalogo'
execute(@griglia)

inviocatalogoClientecliente1cliente2cliente3
2022016.010.001PrestazioniNULLNULLNULL
2022016.112.001PrestazioniNULLNULLNULL
20220140.191.001PrestazioniNULLNULLNULL
20220187.030.001Prestazioni10811

5 Risposte

  • Re: Gestire i null nelle viste pivot

    Un aiutino! 

  • Re: Gestire i null nelle viste pivot

    Salve,

    senza averlo testato, io proverei

    set @griglia =
      'select invio,catalogo, ''Prestazioni'' as Cliente, ISNULL('+ @COLONNA +', 0) ...

    salutoni romagnoli
    – 
    Andrea

  • Re: Gestire i null nelle viste pivot

    Non funziona  :-(

    grz mille

  • Re: Gestire i null nelle viste pivot

    Salve Nico,

    si, hai ragione, la variabile @COLONNA viene usata in 2 punti e in questo caso “non e' corretto” e quindi va gestito diversamente, similarmente a

    SET NOCOUNT ON;
    GO
    USE tempdb;
    GO
    IF (OBJECT_ID('TStruttura') IS NOT NULL)
        DROP TABLE tStruttura;
    CREATE TABLE tStruttura (Struttura varchar(10), QPrest int);
    INSERT INTO tStruttura VALUES ('C.0', NULL), ('C.1', 1), ('C.2', 1), ('C.2', 1);
    DECLARE @SELECT_COLONNA AS nvarchar(MAX)         -- PROIEZIONE NELLE COLONNE
    DECLARE @COLONNA as nvarchar(max)         -- colonna   INVIO NELLE COLONNE
    declare @Griglia as nvarchar(max)
    SELECT @colonna = ISNULL(@COLONNA + ',', '') + QUOTENAME(Struttura) 
        , @SELECT_COLONNA = ISNULL(@SELECT_COLONNA + ',', '') + 'ISNULL(' + QUOTENAME(Struttura) + ', '''') AS ' + QUOTENAME(Struttura)
        FROM
            (
                SELECT DISTINCT Struttura
                    FROM tStruttura AS S
                    WHERE 1 = 1
            ) AS C -- order by struttura
    --SELECT @SELECT_COLONNA ;
    SET @Griglia =
    'SELECT 1 AS invio, 2 AS catalogo, ''Prestazioni'' as Cliente, '+ @SELECT_COLONNA + '
    FROM (
            SELECT Struttura, QPrest
                FROM tStruttura
                WHERE 1 = 1
            ) AS T 
        PIVOT
        (
            SUM(QPrest)
                FOR Struttura IN ('+ @COLONNA +')
        ) AS P -- order by invio,catalogo';
    --SELECT @Griglia
    EXEC (@Griglia)
    – <-----------------------------
    invio       catalogo    Cliente     C.0         C.1         C.2
    ----------- ----------- ----------- ----------- ----------- -----------
    1           2           Prestazioni 0           1           2

    cosi' dovrebbe andare meglio…
    salutoni romagnoli
    – 
    Andrea

  • Re: Gestire i null nelle viste pivot

    FUNZIONAaaa 

    grazie milleeeee

    grande

Devi accedere o registrarti per scrivere nel forum
5 risposte