ThePuiu: prima intrebare de baraj este unde e nomenclatorul de produse ?
Mai precis, ai o tabela in baza de date care sa memoreze nomenclatorul de produse ?
Cand spui pret, la care pret te referi: la cel de intrare sau la cel de iesire ?
Normalizarea e un concept total necunoscut.
O solutie ar putea fi:
SELECT
QueryI.PRODUS,
QueryI.PRET_IN,
CantI,
ISNULL(CantE,0) AS CantE,
CantI -
ISNULL(CantE,0) AS Stoc
FROM
(
SELECT
I.PRODUS, I.PRET_IN, SUM(I.CANTITATE) AS CantI
FROM
INTRARI_DETAIL AS I
GROUP
BY I.PRODUS, I.PRET_IN
) AS QueryI
LEFT OUTER JOIN
(
SELECT
I.PRODUS, I.PRET_IN, SUM(E.CANTITATE) AS CantE
FROM
INTRARI_DETAIL AS I
INNER
JOIN IESIRI_DETAIL AS
E ON I.ID_INTRARI = E.ID_INTRARI
GROUP
BY I.PRODUS, I.PRET_IN
) AS QueryE
ON QueryI.PRODUS = QueryE.PRODUS AND QueryI.PRET_IN = QueryE.PRET_IN
sau
SELECT I.PRODUS, I.PRET_IN,
SUM(E.CANTITATE) AS CantE,
SUM( ISNULL(I.CANTITATE,0)
) AS CantI,
SUM(E.CANTITATE) - SUM( ISNULL(I.CANTITATE,0) ) AS Stoc
FROM INTRARI_DETAIL AS
I
LEFT OUTER JOIN IESIRI_DETAIL
AS E ON
I.ID_INTRARI =
E.ID_INTRARI
GROUP BY I.PRODUS, I.PRET_IN
Poti sa modifici interogarea pentru a calcula stocul la o anumita data.
De asemenea, gruparea ar putea sa fie facuta si in functie de codul produsului (banuiesc ca e vb. de codul produsului) + pret.