Bine.
Atunci interogarea ar putea fi:
SELECT N.DATADOC,
N.NRDOC,
S.OPERATIE,
SUM( CASE WHEN S.COL = 1 THEN N.LEI ELSE 0 END ) AS Col1,
SUM( CASE WHEN S.COL = 2 THEN CASE WHEN S.OPERATIE=0 THEN N.LEI ELSE -N.LEI END ELSE 0 END ) AS Col2
FROM dbo.NOTE AS N INNER JOIN dbo.SCHEME_RG AS S ON N.CONTDB LIKE S.CONTDB AND N.CONTCR LIKE S.CONTCR
GROUP BY N.TIPDOC, N.NRDOC, N.DATADOC, S.OPERATIE
ORDER BY N.NRDOC
cu setul de înregistrări rezultate:
2008-09-01 00:00:00.000 1111 0 915.00 0.00
2008-09-01 00:00:00.000 2222 0 130.00 10.70
2008-09-01 00:00:00.000 2222 1 0.00 -10.70
2008-09-01 00:00:00.000 3333 1 142.20 0.00
A treia înregistrare este afişată deoarece:
[1] pentru afişare valorilor din câmpul S.OPERATIE acesta trebuie inclus în clauza GROUP BY,
[2] automat [1] presupune şi faptul că în setul de înregistrări rezultate să fie afişate grupurile
2222 0 10.70 pentru achiziţie şi
2222 1 -10.70 pentru vânzare
[3] [2] indică faptul că rezultatul
01/09/2008, 1111, MAMAMIA, 0, 915.00, 0.00
01/09/2008, 2222, COCACOLA, 0, 130,00, 10.7
01/09/2008, 3333, PEPSICOLA, 1, 142.2, 0.00
este imposibil de obţinut (asta dacă nu intervine o condiţie WHERE Col2 > 0 / WHERE SUM( CASE WHEN S.COL = 2 ... > 0 de exemplu)
...