我試圖獲取不同表中每一行的循環結果。我需要知道哪個產品線,每個銷售代理,在一個月內出售。爲另一個表的每一行循環相同的查詢
我已經向我展示瞭如何知道產品線總數的查詢。我只需要在它內部插入,在where條件中的「CODAGENT」,循環通過代理表中的每個代理。因此,不要使用sql語言來創建示例。
-----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----
我需要獲得這樣的結果,但在每個代理單獨的表
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
它是意大利人,我不知道你是否瞭解
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
達到了這個新的一步實現我的目標但仍然行不通。這是我的查詢:
---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
這使我有不同的表,我認爲,每個代理在表中。但他們都是空的。如果我在WHERE條件中刪除ANAGRAFICAAGENTI.CODAGENTE = @AgentID,我會獲得同樣的表格,但每個表格的結果相同。他們都是平等的。
這是什麼意思..Set #CODAGENT =行1,2,3,.... – TheGameiswar
使用表格解釋你正在嘗試做什麼,可能會出現循環方式 – TheGameiswar
可以使用SQL遊標作爲在教程http://www.kodyaz.com/articles/cursor.aspx中顯示。但要注意,遊標是解決SQL Server上的問題,出於性能考慮,最後的辦法 – Eralper