Fltrare i dati

lunedì 27 aprile 2009 - 15.06

sanfra Profilo | Junior Member

Salve rieccomi con i miei problemi sulle query
avrei bisogno di capire come filtrare i dati in base ad alcune condizioni

Qui ci sono le tabelle interessate:
CREATE TABLE [dbo].[SK_Merito_UT] ( [OP] [char] (16) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Mese] [char] (7) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ID_Gruppo] [char] (7) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ResaMedia] [decimal](6, 2) NULL ) ON [PRIMARY] GO


CREATE TABLE [dbo].[GRUPPI] ( [ID] [char] (7) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [MESE] [char] (7) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [DESCRIZIONE] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [id_lavorazione] [smallint] NULL ) ON [PRIMARY]



CREATE TABLE [dbo].[Lavorazioni] ( [id_lavorazione] [smallint] IDENTITY (10, 1) NOT NULL , [LAVORAZIONE] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY]


CREATE TABLE [dbo].[SK_GENERALE] ( [OP] [char] (16) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Mese] [char] (7) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ID_GRUPPO] [char] (7) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Punti] [int] NULL ) ON [PRIMARY]

queste sono le tabelle con degli valori fittizi:
Tabella sk_generale:
sanfra 092008 GRP0009 NULL
sanfra 092008 GRP0071 NULL
sanfra 102008 GRP0010 NULL
sanfra 102008 GRP0078 NULL

Tabella Lavorazione
4 prova1
28 prova2


Tabella Gruppi
GRP0071 092008 descrizione 28
GRP0078 102008 descrizione 28
GRP0009 092008 descrizione 4
GRP0010 102008 descrizione 4


Tabella Merito_ut
sanfra 092008 GRP0009 13.38
sanfra 092008 GRP0071 17.97
sanfra 102008 GRP0010 12.70
sanfra102008 GRP0078 17.00


Fatto questo mi è stato chiesto di assegnare dei punti (tabella sk_generale) ,per esmepio 15 all'utente che abbia la stessa lavorazione del mese precedente
e la resa media del mese corrente sia maggiore o uguale al mese precedente + 10%

non so se è chiaro
ma io ho già costruito la mia query che estrae correttamente i miei dati ,ma nel caso(come indicato sopra) ci sono più utenti che lavorano più volte nello stesso mese
succede che mi calcola il primo gruppo ma non gli altri.

questa è la mia query
update sk_generale set punti = punti + 30
from sk_generale gen
join ANA_GRUPPI anagr
on anagr.ID = gen.ID_GRUPPO
and anagr.Mese = gen.Mese
join Lavorazioni lav
on lav.id_lavorazione = anagr.id_lavorazione
join sk_Merito_Outbound me_out
on me_out.OP = gen.OP
and me_out.Mese = gen.Mese
and me_out.ID_Gruppo = gen.ID_GRUPPO
join sk_merito_outbound me_out_prec
on me_out_prec.OP = gen.OP
AND me_out_prec.Mese = dbo.previousmonth(gen.Mese)
and me_out_prec.id_gruppo = gen.id_gruppo
where me_out.ResaMedia >= (me_out_prec.ResaMedia + (me_out_prec.ResaMedia * 0.1)) and (me_out_prec.ResaMedia > 0 AND me_out.ResaMedia > 0)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5