20/01/2026 - sihsandrea ha scritto:
Se parla di left join vuole vedere tutti gli articoli divisi per categoria e ordinati per quantità prelevate per famiglia a loro volta ordinati per nuclei.
Detta in altre parole. per categoria ordinati per Articolo con la quantità ritirata.
20/01/2026 - sihsandrea ha scritto:
Non credo sia quello che vorrebbe fare.
Non si riesce a calcolare la quantità ritirata per articolo dalla Categoria.
il problema è voler usare la tabella Articoli come controllo degli elementi presenti nella categoria.
Il risultato finale doveva essere:
| | Componenti 1 | Componenti 2 | Componenti 3 | Componenti 4 | Componenti 5 | Componenti 6 |
| Alimenti | Visite Totali | Quantità Totale | Nr. Consegnati Visita | Visite Totali | Quantità Totale | Nr. Consegnati Visita | Visite Totali | Quantità Totale | Nr. Consegnati Visita | Visite Totali | Quantità Totale | Nr. Consegnati Visita | Visite Totali | Quantità Totale | Nr. Consegnati Visita | Visite Totali | Quantità Totale | Nr. Consegnati Visita |
| Biscotti | 109 | 110 | 1 | 18 | 18 | 1 | 37 | 38 | 1 | 2 | 2 | 1 | 1 | 1 | 1 | 16 | 21 | 1 |
| Biscotti infanzia | | | | | | | 1 | 1 | 1 | | | | | | | 1 | 1 | 1 |
I dati sono estratti con il codice:
SELECT Comp, Art.IDArticolo, Art.Articolo, Visite, QtaTot, Media
FROM
(
SELECT Comp, IDArticolo, Articolo, SUM(NrVisite) AS Visite, SUM(Qta) AS QtaTot, SUM(Qta)\SUM(NrVisite) AS Media
FROM(SELECT Aggr.IDPersone, 'Componenti ' & [Componenti Familiari] AS Comp, IDArticolo, Articolo,
NrVisite, Qta
FROM (SELECT IDPersone, Distr.IDArticolo, Articolo,
NrVisite, Qta
FROM (SELECT IDPersone, IDArticolo, COUNT(DataVisita) AS NrVisite, SUM(QtaPrel) AS Qta
FROM (SELECT IDPersone, DataVisita, IDArticolo, QtaPrel
FROM ArticoliDistribuzione
WHERE YEAR(DataVisita) = 2025)
GROUP BY IDPersone, IDArticolo) AS Distr
RIGHT JOIN
(SELECT *
FROM Articoli
WHERE Tipo='Viveri')AS Art
ON Distr.IDArticolo = Art.IDArticolo) AS Aggr
LEFT JOIN
persone AS Pers
ON Aggr.IDPersone = Pers.ID)
GROUP BY Comp, IDArticolo, Articolo
ORDER BY Comp, Articolo
)
AS Com1
RIGHT JOIN
(SELECT *
FROM Articoli
WHERE Tipo = 'Viveri') AS Art
ON Art.IDArticolo = Com1.IDArticolo
;
Non sono riuscito con sql a far diventare la categoria intestazione di colonna.
Intanto ho risolto esportando in Excel i dati e con una tabella pivot sono arrivato al risultato che ti ho mostrato.
Ma riuscirò ad imparare come fare la stessa cosa con sql.
Intanto grazie della pazienza, spero di farti avere la soluzione senza ulteriori post.
Saluti