Ici, il utilise un CTE, intégré dans une procédure. Maintenant, j'utilise AdventureWorks 2012, parce que c'est tout ce que j'ai. Mais le concept est le même.
USE [AdventureWorks]
GO
/****** Object: StoredProcedure [dbo].[GenderCountbyCity] Script Date: 4/20/2016 9:07:04 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GenderCountbyCity]
AS
BEGIN
;WITH EmpF
AS (
SELECT pa.City, hre.Gender, COUNT(hre.Gender) AS CountF
FROM Person.BusinessEntityAddress pbea
JOIN Person.Address pa
ON pbea.AddressID = pa.AddressID
JOIN HumanResources.Employee hre
ON pbea.BusinessEntityID = hre.BusinessEntityID
WHERE hre.Gender = 'F'
GROUP BY pa.City, hre.Gender
),
EmpM
AS (
SELECT pa.City, hre.Gender, COUNT(hre.Gender) AS CountM
FROM Person.BusinessEntityAddress pbea
JOIN Person.Address pa
ON pbea.AddressID = pa.AddressID
JOIN HumanResources.Employee hre
ON pbea.BusinessEntityID = hre.BusinessEntityID
WHERE hre.Gender = 'M'
GROUP BY pa.City, hre.Gender
)
SELECT COALESCE(EmpF.City,EmpM.City) AS City, COALESCE(EmpF.CountF,0) AS GenderFCount, COALESCE(EmpM.CountM,0) AS GenderMCount
FROM EmpF
FULL JOIN EmpM
ON EmpF.City = EmpM.City
ORDER BY COALESCE(EmpF.City,EmpM.City)
END
Si vous voulez créer, plutôt que de modifier, une procédure, il suffit de changer « ALTER » pour « créer ». Puis actualisez votre liste de procédures stockées et vous pouvez le modifier à partir de là. Après cela, le "CREATE" montrera automatiquement "ALTER" et toutes les modifications seront enregistrées lorsque vous appuyez sur F5, si elle est réussie. Ensuite, vous pouvez taper EXEC dbo.GenderCountbyCity (ou quel que soit votre nom) [ou simplement cliquer avec le bouton droit sur la procédure et choisir Exécuter la procédure stockée] et vous obtiendrez les résultats.
désolé je veux compter le genre par les villes – qods
Une suggestion: si vous utilisez des alias qui sont des abréviations de vos tables, il peut le rendre plus facile à lire, par exemple, hre pour HumanResources.Employee. Je suis sûr qu'il y a beaucoup de gens qui le font de différentes façons. Mais pour moi, cela aide à réduire le niveau de confusion. En outre, l'utilisation de ces alias dans l'instruction select (même s'ils ne sont pas techniquement nécessaires) peut vous rappeler de quelle table vous l'avez tirée. – DaveX