Donc, tout ce que je veux faire est d'avoir une vue qui montre combien d'enfants entre et y compris l'âge de 5 - 18 sont dans chaque famille. J'utilise SQL Server.Exécution de COUNT() sur une colonne calculée à partir d'une VUE
La vue que je l'ai écrit pour obtenir les membres de la famille Age est
CREATE VIEW VActiveMembers
AS
SELECT
TM.intMemberID AS intMemberID,
TM.strFirstName AS strFirstName,
TM.strLastName AS strLastName,
TM.strEmailAddress AS strEmailAddress,
TM.dtmDateOfBirth AS dtmDateOfBirth,
FLOOR(DATEDIFF(DAY, dtmDateOfBirth, GETDATE())/365.25) AS intMemberAge
FROM
TMembers AS TM
WHERE
TM.intStatusFlagID = 1
intStatusFlag = 1
est juste un drapeau qui signifie que le membre est actif.
Maintenant, j'ai essayé pendant environ 3 heures pour comprendre cela, mais je ne peux pas le comprendre. Voici celui où, au lieu d'essayer d'obtenir la solution d'un seul coup, j'ai essayé de faire un pas sage, mais je n'ai toujours pas obtenu le résultat que je voulais. Comme vous pouvez le voir, je n'ai pas utilisé la vue d'où j'ai calculé l'ÂGE parce que le "Identifiant Multi-pièces ne pouvait pas être lié" J'ai vu cette erreur mais je ne pouvais pas l'obtenir dans ce Cas. Idéalement, je voudrais que le comte à effectuer sur la vue au lieu de recalcul les âges tout recommencer
CREATE VIEW VActiveFamilyMembersK12Count
AS
SELECT
TF.intParishFamilyID,
COUNT(DATEDIFF(DAY, dtmDateOfBirth, GETDATE())/365) AS intMemberAgeCount
FROM
TFamilies AS TF
INNER JOIN
TFamilyMembers AS TFM
INNER JOIN
VActiveMembers AS vAM ON (TFM.intMemberID = vAM.intMemberID)
ON (TFM.intParishFamilyID = TF.intParishFamilyID)
WHERE
TF.intStatusFlagID = 1
GROUP BY
TF.intParishFamilyID
Je voulais juste un compte en utilisant le calcul de l'âge juste pour voir si je pouvais obtenir un décompte correct des membres dans une famille, alors je pourrais commencer à tirer parti de cela pour obtenir le compte des membres d'un certain âge. Le résultat que je reçois est de 2 mais il y a 3 membres garantis pour chaque famille.
Le résultat Je cherche est ce
Family_ID | K12Count
-----------------------------
1001 | 2
1002 | 0
1003 | 1
1004 | 0
Voici une liste des ressources que je levais les yeux en essayant de comprendre cela, peut-être l'un d'entre eux est en fait la réponse et je ne vois pas mais je suis perdu pour le moment.
SQL Select Count from below a certain age
How to get count of people based on age groups using SQL query in Oracle database?
Count number of user in a certain age's range base on date of birth
http://timmurphy.org/2010/10/10/conditional-count-in-sql/
Merci d'avance!
* EDIT *
CREATE VIEW VActiveFamilyMembersK12Count
AS
SELECT
TF.intParishFamilyID,
SUM(CASE WHEN intMemberAge >= 5 AND intMemberAge <= 18 THEN 1 ELSE 0 END) AS intK12Count
FROM
TFamilies AS TF
INNER JOIN TFamilyMembers AS TFM
INNER JOIN VActiveMembers AS vAM
ON (TFM.intMemberID = vAM.intMemberID)
ON (TFM.intParishFamilyID = TF.intParishFamilyID)
WHERE
TF. intStatusFlagID = 1
GROUP BY
TF.intParishFamilyID
GO
CECI EST LA SOLUTION CI-DESSUS.
utilisez-vous SQL Server? –
OUI désolé devinez que j'aurais dû mettre cela dans la question – user3119737