title: Loop the same query for every row of another table
body: <p>I'm trying to obtain a loop result for each row in a different table. I need to know which product line, each sales agent, sell in a month.</p>
  
  <p>I've the query that show me how to know the total of product lines. I need only to insert inside it, the "CODAGENT" in the where condition, looping tHrough each agent in the Agents TABLE. So to make an example not in sql language.  </p>
  
  <pre><code>-----THIS IS NOT A USEFUL CODE, IT'S ONLY FOR UNDERSTANDING----
  For Each Row in Agents TAble Do
  Set #CODAGENT = Row 1,2,3,....
  Select
  -routine for selecting what i need with inside WHERE CODAGENT =  #CODAGENT 
  Next Row
  -----THIS IS NOT A USEFUL CODE, IT'S ONLY FOR UNDERSTANDING----
  </code></pre>
  
  <p>I need to obtain this result but in separate table for each agent             </p>
  
  <pre><code>    SELECT                  
                             TABCATEGORIE.DESCRIZIONE, 
                              TABCATEGORIESTAT.DESCRIZIONE, 
                               LEFT(SUM(TOTNETTORIGA),LEN(SUM(TOTNETTORIGA))-2),
                              TABGRUPPI.DESCRIZIONE,
                              ANAGRAFICAAGENTI.CODAGENTE,
                              ANAGRAFICAAGENTI.DSCAGENTE  
  FROM dbo.TESTEDOCUMENTI 
  INNER JOIN dbo.RIGHEDOCUMENTI ON PROGRESSIVO=IDTESTA
  INNER JOIN dbo.ANAGRAFICAARTICOLI
  ON CODART=ANAGRAFICAARTICOLI.CODICE
  INNER JOIN dbo.TABCATEGORIE ON CATEGORIA=TABCATEGORIE.CODICE 
  INNER JOIN dbo.TABCATEGORIESTAT ON CODCATEGORIASTAT=TABCATEGORIESTAT.CODICE 
  INNER JOIN dbo.TABGRUPPI ON GRUPPO=TABGRUPPI.CODICE 
  INNER JOIN dbo.ANAGRAFICAAGENTI ON ANAGRAFICAAGENTI.CODAGENTE=CODAGENTE1
  WHERE dbo.TESTEDOCUMENTI.DOCCHIUSO = '0' AND dbo.TESTEDOCUMENTI.TIPODOC = 'FVC' AND dbo.TESTEDOCUMENTI.DATADOC BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-2, 0) AND DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-2, -1)
  GROUP BY GRUPPO,CATEGORIA,CODCATEGORIASTAT,TABCATEGORIE.DESCRIZIONE,TABCATEGORIESTAT.DESCRIZIONE,TABGRUPPI.DESCRIZIONE,ANAGRAFICAAGENTI.CODAGENTE,ANAGRAFICAAGENTI.DSCAGENTE 
  ORDER BY CODAGENTE DESC
  </code></pre>
  
  <p>It's Italian, I don't know if you understand</p>
  
  <pre><code>Sample Data
  
  ANAGRAFICAAGENTI
  CODAGENTE | DSCAGENTE
  A1        | Agent Name
  
  then there is the result of the query. So The result is 
  
  CATEGORY    | CATEGORY2     |TOTNETTORIGA| GRUPPI           | CODAGENTE | DSCAGENTE
  ------------+---------------+------------+------------------+-----------+----------
  TAVOLI      | TAVOLI        | 22571.36   | PRODOTTO FINITO  | A    77   | name
  PENSILI     | PENSILI       | 1319.12    | PRODOTTO FINITO  | A    77   | name
  LAVATOIO    | LAVATOIO      | 7411.08    | PRODOTTO FINITO  | A    77   | name
  LAVATOIO    | MACELLERIA    | 505.00     | PRODOTTO FINITO  | A    77   | name
  MACELLERIA  | MACELLERIA    | 3762.00    | PRODOTTO FINITO  | A    77   | name
  LINEA PESCE | LINEA PESCE   | 3824.00    | PRODOTTO FINITO  | A    77   | name
  TAVOLI      | TAVOLI        | 1073.60    | PRODOTTO FINITO  | A    76   | name1
  PENSILI     | PENSILI       | 262.80     | PRODOTTO FINITO  | A    76   | name1
  </code></pre>
  
  <p>Reached This New Step to achieve my goal but still doesn't work. This is my query: </p>
  
  <pre><code>---CREO IL CURSORE C PER CALCOLARE GLI AGENTI---
  DECLARE c CURSOR FOR
  SELECT DISTINCT
      ANAGRAFICAAGENTI.CODAGENTE
  FROM  dbo.ANAGRAFICAAGENTI
  ----DICHIARO LA VARIABILE PER AGENTE
  DECLARE @AgentID VARCHAR(4)
  ----PRENDI IL PRIMO AGENTE E METTILO NELLA VARIABILE----
  OPEN c
  FETCH NEXT FROM c INTO @AgentID
  
  WHILE @@FETCH_STATUS = 0
      BEGIN
           SELECT 
  
                             ANAGRAFICAAGENTI.DSCAGENTE,
                               ANAGRAFICAAGENTI.CODAGENTE,
                                 TABCATEGORIE.DESCRIZIONE, 
                              TABCATEGORIESTAT.DESCRIZIONE, 
                               LEFT(SUM(TOTNETTORIGA),LEN(SUM(TOTNETTORIGA))-2),
                              TABGRUPPI.DESCRIZIONE
  
  FROM dbo.TESTEDOCUMENTI 
  INNER JOIN dbo.RIGHEDOCUMENTI ON PROGRESSIVO=IDTESTA
  INNER JOIN dbo.ANAGRAFICAARTICOLI
  ON CODART=ANAGRAFICAARTICOLI.CODICE
  INNER JOIN dbo.TABCATEGORIE ON CATEGORIA=TABCATEGORIE.CODICE 
  INNER JOIN dbo.TABCATEGORIESTAT ON CODCATEGORIASTAT=TABCATEGORIESTAT.CODICE 
  INNER JOIN dbo.TABGRUPPI ON GRUPPO=TABGRUPPI.CODICE 
  LEFT JOIN dbo.ANAGRAFICAAGENTI ON ANAGRAFICAAGENTI.CODAGENTE=CODAGENTE1
  WHERE ANAGRAFICAAGENTI.CODAGENTE =  @AgentID AND dbo.TESTEDOCUMENTI.DOCCHIUSO = '0' AND dbo.TESTEDOCUMENTI.TIPODOC = 'FVC' AND dbo.TESTEDOCUMENTI.DATADOC BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-2, 0) AND DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-2, -1)
  GROUP BY GRUPPO,CATEGORIA,CODCATEGORIASTAT,TABCATEGORIE.DESCRIZIONE,TABCATEGORIESTAT.DESCRIZIONE,TABGRUPPI.DESCRIZIONE,ANAGRAFICAAGENTI.CODAGENTE,ANAGRAFICAAGENTI.DSCAGENTE 
  ORDER BY CODAGENTE DESC,SUM(TOTNETTORIGA) desc
  --PRENDI IL PROSSIMO AGENTE---
  FETCH NEXT FROM c INTO @AgentID
  END
  --PULISCI---
  CLOSE c
  DEALLOCATE c
  </code></pre>
  
  <p>This make me have different table, I think, one for each agent in the table. But They are all empty. If I remove  ANAGRAFICAAGENTI.CODAGENTE =  @AgentID in the WHERE condition I obtain the same table but with equal result for each one. They are all equal. </p>