View Full Version : Problema con una query
scoppato
04-05-2002, 16:05
Questo che segue è il codice SQL di una query a campi incrociati fatta in access:
TRANSFORM Count(Appuntamenti.EsitoTelf) AS ConteggioDiEsitoTelf
SELECT Elenco_Utenti.Cognome
FROM Elenco_Utenti INNER JOIN Appuntamenti ON Elenco_Utenti.NomeUtente = Appuntamenti.NomeUtente
GROUP BY Elenco_Utenti.Cognome
PIVOT Appuntamenti.EsitoTelf;
Questa query mi conta quante volte appare in un campo una determinata stringa, puo' accadere che tale stringa non ci sia e quindi il risultato della query mi da un campo vuoto.
come faccio a far comparire uno 0 nel caso il conteggiuo risulti nullo?
vi ringrazio anticipatamente
lo scoppato:)
(SELECT Elenco_Utenti.Cognome, 0 As ConteggioDiEsitoTelf
FROM Elenco_Utenti
WHERE Elenco_Utenti.Cognome NOT IN (SELECT Elenco_Utenti.Cognome
FROM Elenco_Utenti INNER JOIN Appuntamenti ON Elenco_Utenti.NomeUtente = Appuntamenti.NomeUtente
GROUP BY Elenco_Utenti.Cognome
HAVING Count(Appuntamenti.EsitoTelf) > 0)
UNION
(TRANSFORM Count(Appuntamenti.EsitoTelf) AS ConteggioDiEsitoTelf
SELECT Elenco_Utenti.Cognome
FROM Elenco_Utenti INNER JOIN Appuntamenti ON Elenco_Utenti.NomeUtente = Appuntamenti.NomeUtente
GROUP BY Elenco_Utenti.Cognome
PIVOT Appuntamenti.EsitoTelf);
Prova così :)
scoppato
05-05-2002, 00:30
ciao cionci!
ho provato a usare il tuo codice in access, ma non funziona!
access mi da' il seguente errore:
Impossibile usare il campo incrociato di una colonna non fissa come sotto query.
dove sbaglio?
...sei sempre disponibile!!!!! grazie!:):):)
Ah caspita aspetta...lo statement trasform non l'avevo mai usato...
Faccio qualche prova e ti faccio sapere...
Ah...non è che mi passeresti il db...almeno non ho bisogno di rifarmelo ?
Il massimo che ho potuto fare è questo...
Ti devi fare due query separate perchè non sono riuscito a mettere le query insieme (dava errori strani)...
Query1 :
TRANSFORM Count([EsitoTelf]) AS ConteggioDiEsitoTelf
SELECT [Elenco_Utenti].[Cognome]
FROM Query2
GROUP BY [Elenco_Utenti].[Cognome]
PIVOT [Appuntamenti].[EsitoTelf];
Query2 :
(SELECT [Elenco_Utenti].[Cognome], [Appuntamenti].[EsitoTelf]
FROM Elenco_Utenti INNER JOIN Appuntamenti ON [Elenco_Utenti].[NomeUtente]=[Appuntamenti].[NomeUtente])
UNION ALL
(SELECT [Elenco_Utenti].[Cognome], "NoAppuntamenti" As EsitoTelf
FROM Elenco_Utenti
WHERE [Elenco_Utenti].[Cognome] NOT IN
(SELECT [Elenco_Utenti].[Cognome]
FROM Elenco_Utenti INNER JOIN Appuntamenti ON [Elenco_Utenti].[NomeUtente]=[Appuntamenti].[NomeUtente]));
In pratica mette un nuovo campo chiamato NoAppuntamenti e ci mette il valore 1 se la persona non è ha mai avuto un appuntamento...
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.