Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Query raggruppamento e confronto stati
lunedì 03 giugno 2013 - 13.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Bolo
Profilo
| Junior Member
58
messaggi | Data Invio:
lun 3 giu 2013 - 13:57
Ciao A tutti,
ho una richiesta un pò bizzarra per una query che non riesco nemmeno ad immaginarmi come fare.
Ho una serie di record di impianti su cui avvengono determinate lavorazioni periodiche; ogni impianto ha più record (uno per lavorazione) e ad esso è associato uno stato (grigio = emesso, rosso = inizio lavori, giallo = fine lavori, verde = convalidato).
Vorrei fare una query che mi estragga un elenco delle sedi con lo stato "minore" o quanto meno vincolante alla convalida dei lavori tra questi; mi spiego meglio, se la sede ha tutte le lavorazioni sullo stesso stato sarà quello che comanda, altrimenti anche se una sola sede ha uno stato "inferiore", comanda quello, per esempio se 3 lavorazioni sono su fine lavori e una su emesso, lo stato globale sarà emesso...
Spero di essermi spiegato...
Idee?
Grazie
renarig
Profilo
| Expert
517
messaggi | Data Invio:
lun 3 giu 2013 - 17:15
>Spero di essermi spiegato...
Non ho capito molto,
Tu hai parlato di
- Impianti
- Sedi
- Lavoazone
- Stato
Non mi è chiara la differenza fra Impianti e Sedi
( forse sono la stessa cosa )
_________________________________
Dicci invece il
NomeTabella
NomeCampi
Un po di record inseriti
Il risultato che vuoi ottenere
.
Bolo
Profilo
| Junior Member
58
messaggi | Data Invio:
lun 3 giu 2013 - 18:58
In effetti immagino sia di difficile comprensione... comunque si, sedi e impianti sono la stessa cosa. Faccio un esempio pratico:
TABELLA: lavori
CAMPI: impianto, lavorazione, stato
Esempi di record:
1: imp1, lav1, iniziolavori
2: imp1, lav2, iniziolavori
3: imp2, lav1, iniziolavori
4: imp2, lav2, convalidato
5: imp2, lav3, finelavori
6: imp3, lav1, finelavori
7: imp3, lav2, convalidato
La query dovrebbe restituire:
imp1, iniziolavori
imp2, iniziolavori
imp3, finelavori
Praticamente:
-> se almeno una lavorazione è su iniziolavori, lo stato dell'impianto sarà su iniziolavori
OPPURE
-> se almeno una è su finelavori e nessuna su iniziolavori lo stato sarà finelavori
OPPURE
-> se tutte sono su convalidato lo stato sarà convalidato
Insomma con un if sarebbe facile ma in SQL server non saprei come tradurlo...
Grazie
renarig
Profilo
| Expert
517
messaggi | Data Invio:
lun 3 giu 2013 - 23:40
>Insomma con un if sarebbe facile ma in SQL server non saprei come tradurlo...
iif(stato = "emesso";1;0)
CASE WHEN stato = 'emesso' THEN 1 ELSE 0 END
_________________________________________________________________
ma il problema a parer mio e piu grosso,
tu stesso nei 2 post precedenti hai scritto alternativamente:
"iniziolavori" oppure "inizio lavori"
qualcun'altro magari scrivera "Inizio L." ????????
La soluzione sarebbe una tabellina di 4 record da mettere in JOIN con la tabella "lavori"
avresti cosi la possibilita di numerare in modo crescente i 4 stati per poi
------- raggruppare per lavori ed estrarre il Min di stato
________________________________________________________
se non puoi fare la tabellina in alternativa potresti rinominare i tuoi 4 stati
emesso ---------> assegnato
iniziolavori ------> iniziolavori
finelavori -------> terminelavori
convalidato -----> validato
in modo che gli stati siano in ordine alfabetico e ti prendi sempre il minimo
__________________________________________________________
in ultima alternativa facciamo 2 viste con tanti CASE WHEN ......
e risolviamo il problema
.
Bolo
Profilo
| Junior Member
58
messaggi | Data Invio:
mar 4 giu 2013 - 08:17
Caspita quella del minimo è una genialata
DIrei che è la mia soluzione, ti ringrazio tantissimo... ora vedo come attuarla bene, in caso mi rifaò vivo!!!
Torna su
Stanze Forum
Elenco Threads
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 !