Databáze > MS SQL

dotaz sum

(1/3) > >>

Morrison:
Zdravím vespolek,
nějak se nemůžu dopracovat funkční query k následujícímu problému. Budu vděčný za radu.

Mám tabulky Položky a Data, v Položkách je hlavička a v Datech jsou řádky. Jak vyselectit sumu sloupce Data.Skutecne, joinout Položky.Požadavek a navíc to seskupit podle Data.Nazev? Viz příloha.

Mám:

--- Kód: ---SELECT D.Nazev,SUM(D.Skutecne),SUM(P.Pozadavek)
FROM Data D
LEFT JOIN Polozky P ON D.ID_Polozky=P.ID
GROUP BY Nazev

--- Konec kódu ---
jenže to mi násobí sloupec Položky.Požadavek vždy tolikrát, kolik je pro položku řádků v tab. Data

Stanislav Hruška:
Ja to vidím na subselect. Najprv si urobiť samostatne súčty, podľa ID a nie názvu. Riskuješ, že sa budú opakovať názvy, ale ID bude rôzne. A až tento subselect použiť namiesto tabuľky Data.
Takéto prípady so mnou pár krát ťažko zacvičili.

Morrison:
Díky za odpovědi.

Stanislav Hruška: subquery neprojde, protože ID_Polozky není zahrnut ani v aggregate ani ani v group by. A když to dám do group by, tak pochopitelně zase nedostanu co řádek to jeden název :(

--- Kód: ---SELECT D.Nazev,SUM(D.Skutecne),(SELECT SUM(P.Pozadavek) FROM Polozky WHERE ID=D.ID_Polozky)
FROM Data D
GROUP BY D.Nazev

--- Konec kódu ---

Delfin: to bohužel nejde :) Položek je víc než jen ty dvě co jsem dal do ukázky, a potřebuju sumu jejich Požadavků.

EDIT: upravil jsem obrázek

Morrison:
Delfin: To bohužel taky nejde, protože Data.Název patřící ke stejné položce může být různý. Jde o hmotnosti nějakých surovin a když třeba k určitému požadavku dojde materiál A, může být klidně nahrazen materiálem B.
Nechci vypadat nevděčně, fakt jsem moc rád za takové rychlé odpovědi.

Stanislav Hruška:

--- Citace ---A až tento subselect použiť namiesto tabuľky Data.
--- Konce citace ---
Asi Ti to ušlo. To znamená, že subselect má byť až po FROM a nie súčasťou SELECT.

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi