Problema con le subquery

lunedì 01 settembre 2008 - 23.25

fabionik2004 Profilo | Newbie

Salve a tutti ho un problema con una query nidificata e la ricopio qui di seguito in modo che possiate capire:
SELECT RagSociale, Count(*) AS NumFatture, Sum(FattureVendite.['Imponibile']) AS Imponibile, Sum(FattureVendite.['Sconto']) AS Sconto, Sum(FattureVendite.TotFattura) AS TotFatture, Sum(FattureVendite.Incasso) AS IncassoInFattura, (SELECT SUM(Incasso) FROM Incassi WHERE CodCliente=[Inserire CodCliente]) AS IncassoFuoriFattura, Sum(NZ([FattureVendite].[Omaggio])) AS Omaggi, (Sum (FattureVendite.TotFattura)) - (Sum (FattureVendite.Incasso))-(SELECT SUM (Incasso) FROM Incassi WHERE CodCliente=[Inserire CodCliente]) AS Sospesi
FROM FattureVendite, Clienti
WHERE (((FattureVendite.CodCliente)=[Inserire CodCliente])) AND Clienti.CodCliente=FattureVendite.CodCliente
GROUP BY ([FattureVendite.CodCliente]), RagSociale;
Il problema sta nel fatto che se Incassi.Incasso è =0 le righe IncassoFuoriFattura e Sospesi mi rimangono vuote. Ho provato a utilizzare NZ come ho fatto anche per gli omaggi ma non funziona evidentemente perchè si tratta di subquery. Potreste aiutarmi????

aabruzzese Profilo | Junior Member

provi questo:

(SELECT SUM((Nz(Incasso),0)) FROM Incassi



Angelo Abruzzese

fabionik2004 Profilo | Newbie

ma così mi calcola la somma di tutti gli incassi e non quella di un determinato cliente

aabruzzese Profilo | Junior Member

Volevo dire questo:

(SELECT SUM((Nz(Incasso),0)) FROM Incassi WHERE CodCliente=[Inserire CodCliente]) AS IncassoFuoriFattura




Angelo Abruzzese

fabionik2004 Profilo | Newbie

Infatti avevo provato questo metodo come ho fatto con Omaggi ma è molto strano perchè non funziona. Se Incassi.Incasso è vuoto mi restituisce sempre la riga vuota anche nei sospesi, mentre se c'è qualche incasso funziona correttamente anche coi sospesi. Cmq ho appena provato come mi hai detto tu e mi segnala errore di sintassi. Ma perchè diavolo non funziona???

squilibrium Profilo | Junior Member

invece di usare NZ prova con isnull([nome campo],0)

fabionik2004 Profilo | Newbie

Ho provato anche quella ma niente...

squilibrium Profilo | Junior Member

Strano

Secondo quanto ho capito la query dovrebbe essere così:

SELECT RagSociale, Count(*) AS NumFatture, Sum(FattureVendite.['Imponibile']) AS Imponibile, Sum(FattureVendite.['Sconto']) AS Sconto, Sum(FattureVendite.TotFattura) AS TotFatture, Sum(FattureVendite.Incasso) AS IncassoInFattura, (SELECT isnull(SUM(Incasso),0) FROM Incassi WHERE CodCliente=[Inserire CodCliente]) AS IncassoFuoriFattura, Sum(NZ([FattureVendite].[Omaggio])) AS Omaggi, (Sum (FattureVendite.TotFattura)) - (isnull(Sum (FattureVendite.Incasso),0))-(SELECT isnull(SUM (Incasso),0) FROM Incassi WHERE CodCliente=[Inserire CodCliente]) AS Sospesi
FROM FattureVendite, Clienti
WHERE (((FattureVendite.CodCliente)=[Inserire CodCliente])) AND Clienti.CodCliente=FattureVendite.CodCliente
GROUP BY ([FattureVendite.CodCliente]), RagSociale;

aabruzzese Profilo | Junior Member


Perche non mi mandi la schema dellla dB e faro qualche prove.


:)

Angelo Abruzzese
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5