Query facile (per voi)
damianodec non è online. Ultima attività: 23/05/2008 17.06.38damianodec
Inserito il: 22 maggio 2008 18.29
3 messaggi dal 22 mag 2008 Istalla Microsoft Silverlight!
Salve a tutti, Premetto che sono nuovo del forum e non sono un grande esperto di SQL, tiro fuori qualche query per vedere meglio le mie situazioni aziendali, fin quando sono semplici me la cavicchio, ma su questo problema mi sono bloccate e spero mi diate una mano.
Ho una tabellaUno che contiene questi campi: Keynum, CodiceCliente, DescrCliente, NumeroPartita, Importo
La tabellauno può contenere più righe con lo stesso codice cliente, descrizione e numero partita

Ho un'altra tabellaDue che ha questi altri campi: Keynum, Codice Cliente, NumeroPartita, ImportoDare e ImportoAvere.

Il mio problema è questo:
Voglio tirare fuori da TabellaDue la somma (per differenza tra dare e avere) dei campi ImportoDare-ImportoAvere per quei clienti presenti in TabellaUno per singola partita presente in TabellaUno.

In pratica, TabellaUno contiene:
1, C01, Pippo, 123, 10.000,00
2, C02, Pluto, 678, 5.000,00
3, C01, Pippo, 124, 15.000,00
4, C01, Pippo, 123, 8.000,00
5, C01, Pippo, 123, 3.000,00
6, C01. Pippo, 123, 16.000,00

TabellaDue:
1, C01, 124, 5.000,00, 3.000,00
2, C02, 678, 3.500,00, 4.500,00
4, C06, 358, 2.500,00, 3.500,00 (cliente non presente in TabellaUno)
5, C01, 123, 6.000,00, 2.500,00
6, C01, 123, 3.000,00, 1.000,00
7, C01, 125, 2.000,00, 500,00 (partita non presente in TabellaUno)
8, C01, 123, 1.250,00, 1.000,00

Elaborando TabellaDue, del Cliente C01 dovrebbe controllare se in TabellaUno è presente la partita di riferimento e darmi UNA SOLA VOLTA COME RISULTATO per cliente e partita il saldo tra dare e avere.

Forse sono stato un pò lungo ma spero che mi aiutate a risolvere questo (per me) grosso problema

Grazie.
Microsoft Most Valuable Professional
Re: Query facile (per voi)
Andrea Montanari non è online. Ultima attività: 25/07/2008 12.34.34Andrea Montanari
Inserito il: 22 maggio 2008 19.04
contributi / Top Poster / Community manager / www.asql.biz / 907 messaggi dal 27 lug 2005 Istalla Microsoft Silverlight!
salve,
damianodec wrote:

Elaborando TabellaDue, del Cliente C01 dovrebbe controllare se in TabellaUno è presente la partita di riferimento e darmi UNA SOLA VOLTA COME RISULTATO per cliente e partita il saldo tra dare e avere.

non penso di aver affatto capito il problema, ma tant'e'...

SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.t1 (
Keynum int,
CodiceCliente varchar(10),
DescrCliente varchar(10),
NumeroPartita int,
Importo decimal (18,4)
);

CREATE TABLE dbo.t2 (
Keynum int,
CodiceCliente varchar(10),
NumeroPartita int,
ImportoDare decimal (18,4),
ImportoAvere decimal (18,4)
);
GO
INSERT INTO dbo.t1 VALUES ( 1 , 'C01', 'Pippo', 123, 10000 ); INSERT INTO dbo.t1 VALUES ( 2 , 'C02', 'Pluto', 678, 5000 ); INSERT INTO dbo.t1 VALUES ( 3 , 'C01', 'Pippo', 124, 15000 ); INSERT INTO dbo.t1 VALUES ( 4 , 'C01', 'Pippo', 123, 8000 ); INSERT INTO dbo.t1 VALUES ( 5 , 'C01', 'Pippo', 123, 3000 ); INSERT INTO dbo.t1 VALUES ( 6 , 'C01', 'Pippo', 123, 16000 );
INSERT INTO dbo.t2 VALUES ( 1 , 'C01', 124, 5000, 3000 );
INSERT INTO dbo.t2 VALUES ( 2 , 'C02', 678, 3500, 4500 );
INSERT INTO dbo.t2 VALUES ( 4 , 'C06', 358, 2500, 3500 );
INSERT INTO dbo.t2 VALUES ( 5 , 'C01', 123, 6000, 2500 );
INSERT INTO dbo.t2 VALUES ( 6 , 'C01', 123, 3000, 1500 );
INSERT INTO dbo.t2 VALUES ( 7 , 'C01', 125, 2000, 500 );
INSERT INTO dbo.t2 VALUES ( 8 , 'C01', 123, 1250, 1000 );
GO
SELECT t1.CodiceCliente, t1.NumeroPartita , SUM(t1.Importo) - SUM(t2.Importo) AS [Saldo]
FROM dbo.t1 t1
JOIN (
SELECT t2.CodiceCliente, t2.NumeroPartita, SUM(ImportoDare) - SUM(ImportoAvere) AS [Importo]
FROM dbo.t2 t2
GROUP BY t2.CodiceCliente, t2.NumeroPartita
) t2 ON t1.CodiceCliente = t1.CodiceCliente
AND t1.NumeroPartita = t2.NumeroPartita
GROUP BY t1.CodiceCliente, t1.NumeroPartita;

GO
DROP TABLE dbo.t1, dbo.t2;
--<--------
CodiceCliente NumeroPartita Saldo
-----------
-----------
------------
C01 123 16000.0000
C01 124 13000.0000
C02 678 6000.0000

saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
Re: Query facile (per voi)
damianodec non è online. Ultima attività: 23/05/2008 17.06.38damianodec
Inserito il: 23 maggio 2008 09.56
3 messaggi dal 22 mag 2008 Istalla Microsoft Silverlight!
lo so che era poco chiaro, non son riuscito ad esporre bene il problema, ma con la tua risposta (invertendo però le tabelle) mi hai dato lo spunto per risolvere il problema.
Ti ringrazio molto, per l'aiuto datomi nel risolvere il problema.
Saluti e a presto.
Re: Query facile (per voi)
damianodec non è online. Ultima attività: 23/05/2008 17.06.38damianodec
Inserito il: 23 maggio 2008 10.27
3 messaggi dal 22 mag 2008 Istalla Microsoft Silverlight!
giacchè ne approfitto, e se volessi solo la riga di totale della query ?
Microsoft Most Valuable Professional
Re: Query facile (per voi)
Andrea Montanari non è online. Ultima attività: 25/07/2008 12.34.34Andrea Montanari
Inserito il: 25 maggio 2008 18.38
contributi / Top Poster / Community manager / www.asql.biz / 907 messaggi dal 27 lug 2005 Istalla Microsoft Silverlight!
salve,
damianodec wrote:
giacchè ne approfitto, e se volessi solo la riga di totale della query ?

cioe'?
definisci un "modello" proponendo il DDL e relativi insert per poi impostare cosa desideri ottenere..
saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org

Vai a:

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.


COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums