내가 원하는 것은 5-18 세 사이의 어린이 수와 각 가족 수를 보여주는 뷰입니다. SQL Server를 사용하고 있습니다. 보기에서 계산 된 열에 대해 COUNT() 수행
나는 가족 구성원 시대를 얻기 위해 쓴보기
는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
이제 이것을 알아 내기 위해 약 3 시간 동안 노력했지만 그 사실을 알 수는 없습니다. 여기에 하나의 가금류 급습에서 해결책을 얻으려고 시도하는 대신 현명한 단계로 나섰지 만, 여전히 나는 원하는 결과를 얻지 못했습니다.
"여러 부분 식별자를 바인딩 할 수 없기 때문에"내가 AGE를 계산 한 위치에서보기를 사용하지 않았다는 것을 알았지 만 그 오류를 보았지만이 부분에서 벗어나지 못했습니다. 케이스. 이상적으로는 내가 회원의 정확한 수를 얻을 수 있다면 바로 바로 볼 수있는 나이 계산을 사용하여 카운트를 얻고 싶었다
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
다시 한번 세를 다시 계산하는 대신 VIEW에서 수행 될 수를 싶습니다 가족이되면 특정 나이의 구성원을 얻는 것에 착수 할 수 있습니다. 내가 돌아 오는 결과는 2이지만 각 가족에게는 3 명의 멤버가 보장됩니다.
내가 찾고 있어요 결과는 자원의 목록 내가 이것을 알아 내려고 고개를 여기에이
Family_ID | K12Count
-----------------------------
1001 | 2
1002 | 0
1003 | 1
1004 | 0
입니다, 그들 중 아마 하나는 사실에 대답하고 난 그냥 볼 수 없습니다 그러나 나는 그 순간에 패배하고 있습니다. 고급의
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/
감사합니다!
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
이 상기 해결책이다.
SQL Server를 사용하고 있습니까? –
예 죄송합니다. 질문에 넣어야합니다. – user3119737