Comment déclarer un tableau à l'intérieur de MS SQL Server Procédure Stockée?
J'ai besoin de déclarer 12 décimal variables, correspondant à chaque mois de l'année, avec un curseur I la somme des valeurs de ces variables, puis-je mettre à Jour certains renseignements sur les ventes.
Je ne sais pas si sql server a cette syntaxe
Declare MonthsSale(1 to 12) as decimal(18,2)
Ce code fonctionne Ok. !
CREATE PROCEDURE [dbo].[proc_test]
AS
BEGIN
--SET NOCOUNT ON;
DECLARE @monthsales TABLE ( monthnr int, amount decimal(18,2) )
-- PUT YOUR OWN CODE HERE
-- THIS IS TEST CODE
-- 1 REPRESENTS JANUARY, ...
INSERT @monthsales (monthnr, amount) VALUES (1, 100)
INSERT @monthsales (monthnr, amount) VALUES (1, 100)
INSERT @monthsales (monthnr, amount) VALUES (2, 200)
INSERT @monthsales (monthnr, amount) VALUES (3, 300)
INSERT @monthsales (monthnr, amount) VALUES (4, 400)
INSERT @monthsales (monthnr, amount) VALUES (5, 500)
INSERT @monthsales (monthnr, amount) VALUES (6, 600)
INSERT @monthsales (monthnr, amount) VALUES (7, 700)
INSERT @monthsales (monthnr, amount) VALUES (8, 800)
INSERT @monthsales (monthnr, amount) VALUES (9, 900)
INSERT @monthsales (monthnr, amount) VALUES (10, 1000)
INSERT @monthsales (monthnr, amount) VALUES (11, 1100)
INSERT @monthsales (monthnr, amount) VALUES (12, 1200)
SELECT monthnr, SUM(amount) AS SUM_MONTH_1 FROM @monthsales WHERE monthnr = 1 GROUP BY monthnr
SELECT monthnr, SUM(amount) AS SUM_MONTH_2 FROM @monthsales WHERE monthnr = 2 GROUP BY monthnr
SELECT monthnr, SUM(amount) AS SUM_MONTH_3 FROM @monthsales WHERE monthnr = 3 GROUP BY monthnr
SELECT monthnr, SUM(amount) AS SUM_MONTH_4 FROM @monthsales WHERE monthnr = 4 GROUP BY monthnr
SELECT monthnr, SUM(amount) AS SUM_MONTH_5 FROM @monthsales WHERE monthnr = 5 GROUP BY monthnr
SELECT monthnr, SUM(amount) AS SUM_MONTH_6 FROM @monthsales WHERE monthnr = 6 GROUP BY monthnr
SELECT monthnr, SUM(amount) AS SUM_MONTH_7 FROM @monthsales WHERE monthnr = 7 GROUP BY monthnr
SELECT monthnr, SUM(amount) AS SUM_MONTH_8 FROM @monthsales WHERE monthnr = 8 GROUP BY monthnr
SELECT monthnr, SUM(amount) AS SUM_MONTH_9 FROM @monthsales WHERE monthnr = 9 GROUP BY monthnr
SELECT monthnr, SUM(amount) AS SUM_MONTH_10 FROM @monthsales WHERE monthnr = 10 GROUP BY monthnr
SELECT monthnr, SUM(amount) AS SUM_MONTH_11 FROM @monthsales WHERE monthnr = 11 GROUP BY monthnr
SELECT monthnr, SUM(amount) AS SUM_MONTH_12 FROM @monthsales WHERE monthnr = 12 GROUP BY monthnr
-- END TEST CODE
END
Vous devez vous connecter pour publier un commentaire.
Vous pouvez déclarer une variable de table (la déclaration d'une variable de type tableau):
Vous pouvez ajouter des colonnes supplémentaires que vous le souhaitez:
Vous pouvez mettre à jour la variable de table comme tout autre tableau:
Est-il une raison pourquoi vous n'êtes pas à l'aide d'une variable de table et la SOMME totale de l'opérateur, au lieu d'un curseur? SQL excelle à des opérations orientées. 99.87% du temps que vous vous trouvez à l'aide d'un curseur, il y a un jeu orienté alternative qui est plus efficace:
T-SQL ne prend pas en charge les tableaux que je suis au courant.
Quelle est votre structure de la table? Vous pourriez probablement créer une requête qui n'ceci à la place:
Excellente question et une grande idée, mais en SQL, vous aurez besoin de faire cela:
Pour le type de données datetime, quelque chose comme cela-
Si tout ce que vous voulez vraiment est des chiffres, ce faire-