2017-11-27 13 views
0

나이와 카운티별로 사람 수를 늘리려고합니다. 아래는 내가 성취하고자하는 사진입니다. 그냥 피벗 테이블 enter image description here컬럼 함수 "MAX"의 피연산자에는 컬럼 함수, 스. 라 fullselect 또는 서브 u 리가 포함됩니다.

SELECT 
country, 
MAX (CASE WHEN Age = '0' THEN count(age) END) AS total0, 
MAX (CASE WHEN Age = '1' THEN count(age) END) AS total1, 
MAX (CASE WHEN Age = '2' THEN count(age) END) AS total2, 
MAX (CASE WHEN Age = '3' THEN count(age) END) AS total3, 
MAX (CASE WHEN Age = '4' THEN count(age) END) AS total4, 
MAX (CASE WHEN Age = '5' THEN count(age) END) AS total5 
FROM (

SELECT person_id, 
TIMESTAMPDIFF(256,CHAR(TIMESTAMP(a.admission_date) - TIMESTAMP(p.dateofbirth))) AS Age, 
dateofbirth, 
a.admission_date 

FROM person p 
LEFT JOIN admission a ON p.person_id = a.person_id 
WHERE category = '1' AND startdate BETWEEN '8/1/2016' AND '10/31/2017') AS a 

WHERE age <= '5' 

GROUP BY country 

처럼이 코드는 나에게이 오류 제공 : 컬럼 함수의 피연산자를 "MAX"는 열 함수, 스칼라 fullselect에, 또는 하위 쿼리가 포함되어 있습니다. ..... 문제가 당신이 당신의 집계를 집계하려고하는 당신에게

답변

1

감사

MAX(COUNT(*)) 

도움 그러나 현실은 당신이 정말로에만 COUNT()에 원하는 전혀 MAX() 필요하지 않습니다 제발.

SELECT 
country, 
COUNT(CASE WHEN Age = '0' THEN person_id END) AS total0, 
COUNT(CASE WHEN Age = '1' THEN person_id END) AS total1, 
COUNT(CASE WHEN Age = '2' THEN person_id END) AS total2, 
COUNT(CASE WHEN Age = '3' THEN person_id END) AS total3, 
COUNT(CASE WHEN Age = '4' THEN person_id END) AS total4, 
COUNT(CASE WHEN Age = '5' THEN person_id END) AS total5 
FROM (

SELECT person_id, 
TIMESTAMPDIFF(256,CHAR(TIMESTAMP(a.admission_date) - TIMESTAMP(p.dateofbirth))) AS Age, 
dateofbirth, 
a.admission_date 

FROM person p 
LEFT JOIN admission a ON p.person_id = a.person_id 
WHERE category = '1' AND startdate BETWEEN '8/1/2016' AND '10/31/2017') AS a 

WHERE age <= '5' 

GROUP BY country