Principale utente con più risposte
query controllo stato (raggruppamento e controllo valore campo)

Domanda
-
ho una tabla con due campi
PIVA | STATO
--------------------------------------
aaaaaa ok
aaaaaa da verificare
bbbbbb errato
bbbbbb errato
cccccc ok
cccccc ok
ccccc okdovrei realizzare una query che
mi desse un risultato del genere(ovvero lo stato generale di un cliente, per partita iva)
che può essere "ok" se tutti i suoi documenti sono "ok", oppure "non ok" se almeno uno dei suoi documenti non è oknel caso dell'esempio il risultato che mi aspetto il seguente
aaaaaa ok
bbbbbb non ok
cccccc non ok
Risposte
-
Ciao Poioio,
eccoti un esempio di quello che vuoi realizzare
DECLARE @Table TABLE ( PIVA VARCHAR(255), STATO VARCHAR(255) ) DECLARE @Code TABLE ( Status VARCHAR(255), Priority INT ) INSERT INTO @Table (PIVA, STATO) SELECT 'aaa', 'ok' INSERT INTO @Table (PIVA, STATO) SELECT 'aaa', 'da verificare' INSERT INTO @Table (PIVA, STATO) SELECT 'bbb', 'errato' INSERT INTO @Table (PIVA, STATO) SELECT 'bbb', 'errato' INSERT INTO @Table (PIVA, STATO) SELECT 'ccc', 'ok' INSERT INTO @Table (PIVA, STATO) SELECT 'ccc', 'ok' INSERT INTO @Table (PIVA, STATO) SELECT 'ccc', 'ok' INSERT INTO @Code (Status, Priority) SELECT 'ok', 1 INSERT INTO @Code (Status, Priority) SELECT 'da verificare', 2 INSERT INTO @Code (Status, Priority) SELECT 'errato', 3 SELECT t1.PartitaIVA, t1.LivelloAllerta, t2.Status FROM ( SELECT PIVA AS PartitaIVA, MAX(Priority) AS LivelloAllerta FROM @Table t1 LEFT OUTER JOIN @Code t2 ON t1.STATO = t2.Status GROUP BY PIVA ) t1 LEFT OUTER JOIN @Code t2 ON t1.LivelloAllerta = t2.Priority WHERE t1.LivelloAllerta > 1
- Contrassegnato come risposta poioio lunedì 10 giugno 2013 12:39
Tutte le risposte
-
Ciao Poioio,
eccoti un esempio di quello che vuoi realizzare
DECLARE @Table TABLE ( PIVA VARCHAR(255), STATO VARCHAR(255) ) DECLARE @Code TABLE ( Status VARCHAR(255), Priority INT ) INSERT INTO @Table (PIVA, STATO) SELECT 'aaa', 'ok' INSERT INTO @Table (PIVA, STATO) SELECT 'aaa', 'da verificare' INSERT INTO @Table (PIVA, STATO) SELECT 'bbb', 'errato' INSERT INTO @Table (PIVA, STATO) SELECT 'bbb', 'errato' INSERT INTO @Table (PIVA, STATO) SELECT 'ccc', 'ok' INSERT INTO @Table (PIVA, STATO) SELECT 'ccc', 'ok' INSERT INTO @Table (PIVA, STATO) SELECT 'ccc', 'ok' INSERT INTO @Code (Status, Priority) SELECT 'ok', 1 INSERT INTO @Code (Status, Priority) SELECT 'da verificare', 2 INSERT INTO @Code (Status, Priority) SELECT 'errato', 3 SELECT t1.PartitaIVA, t1.LivelloAllerta, t2.Status FROM ( SELECT PIVA AS PartitaIVA, MAX(Priority) AS LivelloAllerta FROM @Table t1 LEFT OUTER JOIN @Code t2 ON t1.STATO = t2.Status GROUP BY PIVA ) t1 LEFT OUTER JOIN @Code t2 ON t1.LivelloAllerta = t2.Priority WHERE t1.LivelloAllerta > 1
- Contrassegnato come risposta poioio lunedì 10 giugno 2013 12:39
-
-