Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    SQL2008 Estrapolazione eventi

    Ciao a tutti,

    ho un problemino, dovrei estrarre dei record da una tabella così composta:

    [dbo].[dipen_malattia](
    [azienda] [varchar](10) NULL,
    [matricola] [varchar](10) NULL,
    [malattia] [varchar](4) NULL,
    [inizio] [datetime] NULL,
    [fine] [datetime] NULL,
    [notes] [varchar](255) NULL,
    [certificato] [varchar](16) NULL,
    [certificato1] [varchar](16) NULL,
    [tipo_evento] [varchar](1) NULL,
    [periodo] [int] NULL,
    [iricovero1] [datetime] NULL,
    [fricovero1] [datetime] NULL,
    [iricovero2] [datetime] NULL,
    [fricovero2] [datetime] NULL,
    [iricovero3] [datetime] NULL,
    [fricovero3] [datetime] NULL,
    [iricovero4] [datetime] NULL,
    [fricovero4] [datetime] NULL,
    [iricovero5] [datetime] NULL,
    [fricovero5] [datetime] NULL,
    [datarilascio] [datetime] NULL,
    [datacertificato] [datetime] NULL,
    [infortunio] [varchar](1) NULL,
    [chiusura] [varchar](1) NULL,
    [parto_presunto] [datetime] NULL,
    [parto_effettivo] [datetime] NULL,
    [fine_evento] [varchar](1) NULL,
    [da_mese_precedente] [varchar](1) NULL,
    [codice_numerazione] [varchar](10) NULL,
    [centro_lavoro] [varchar](8) NULL,
    [nome_figlio] [varchar](255) NULL,
    [data_modifica] [datetime] NULL,
    [username_modifica] [varchar](32) NULL,
    [emens] [varchar](1) NULL,
    [rep_nome] [varchar](50) NULL,
    [rep_indirizzo] [varchar](50) NULL,
    [rep_comune] [varchar](50) NULL,
    [rep_cap] [varchar](5) NULL,
    [rep_provincia] [varchar](2) NULL,
    [data_inserimento] [datetime] NULL,
    [elettronico] [varchar](1) NULL

    partendo dal presupposto che un evento è formato da 1 o più record (un record con tipo_evento = 'I', zero o più record con "tipo_evento = 'C', zero o più record con tipo_evento = 'R'), da questa tabella dovrei estrarre isolare i record relativi agli infortuni ("malattia" = '8I')

    select azienda
    , matricola
    , certificato
    , certificato1
    , tipo_evento
    , periodo
    , datarilascio

    from dipen_malattia

    where malattia = '8I'

    e all'interno di questi record dovrei conteggiare i giorni di durata dell'evento tenedo presente che il "periodo" relativo al "certificato d'inizio" (tipo_evento =I) va sommato a tutti gli altri "periodo" relativi ad eventuali record con tipo_evento = 'C' o a 'R' che hanno "azienda" e "matricola" uguali a quelli del record con tipo_evento ='I' e "certificato1" uguale al "certificato" del "tipo_evento" = I

    Se necessitata di maggior info chiedete.

    Grazie mille per l'aiuto.
    IncorrectSyntax

  2. #2
    puoi fare un esempio pratico di quello che ti serve?

  3. #3
    Sommare i gg (periodo) di ogni singolo certificato partendo dal certificato di inizio (tipo_evento = 'I') + eventuali certificati di continuazione o ricaduta ('C' o 'R') il tutto aggregato per azienda e matricola.
    IncorrectSyntax

  4. #4
    codice:
    SELECT azienda, matricola, SUM(DATEDIFF(dd,fine,inizio)) AS Periodo
    FROM dipen_malattia
    WHERE Tipo_evento IN ('C','I','R')
    GROUP BY azienda, matricola
    In questo modo hai la somma, espressa in giorni (parametro dd su datediff) per ogni dipendente e azienda.

  5. #5
    Credo sia necessario un cursore ... il problema sta nel fatto che prima di conteggiare devo isolare per azienda e matricola i record (malattia = '8I' e tipo_evento ='I') per poi assocoare ad ogni singolo record 'I' n record 'C' (se ce ne sono) e n record 'R' (se ce ne sono); per fare questo bisogna partire dal presupposto che un evento è formato da 1 o più record (un record con tipo_evento = 'I', zero o più record con "tipo_evento = 'C', zero o più record con tipo_evento = 'R').

    Una volta effettuate le corrette associazioni di record 'I' con eventuali record 'C' ed 'R', solo su questi e per azienda e matricola, devo conteggiare la durata dei singoli eventi.

    quindi i campi che mi interessano sono:

    azienda
    matricola
    malattia = '8I'
    inizio > GETDATE () -60
    fine
    certificato
    certificato 1
    tipo_evento
    periodo

    i tipo evento 'C' ed 'R' si legano al loro tipo evento 'I' tramite il campo certificato1 (infatti il legame è azienda, matricola,certificato1 del/i record 'C' ed 'R'= azienda,matricola certificato del record 'I'


    spero che sia chiaro ....
    IncorrectSyntax

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.