2013-06-18 1 views
0

마지막 기간 (@dt)에 a, b, c 위치가 몇 번 있었는지 보여주는 보고서를 만드는 단일 테이블에서 데이터를 생성하려고합니다.mysql은 DISTINCT를 여러 열로 계산합니다.

하나의 SELECT 쿼리가 작동하도록 만들 수 있지만 함께 그룹화하고 전체 보고서를 생성하는 방법을 알 수 없습니다. 오류는 1241입니다. 피연산자는 1 개의 열을 포함해야하며 이전 답변을 처리하는 데 1 시간을 소비했지만 완전히 멈췄습니다.

SELECT (
SELECT DISTINCT pid, SUM(location like '%a%') FROM db.t WHERE (date > @dt) GROUP BY pid) 
AS 'a', (
SELECT DISTINCT pid, SUM(location like '%b%') FROM db.t WHERE (date > @dt) GROUP BY pid) 
AS 'b', (
SELECT DISTINCT pid, SUM(location like '%c%') FROM db.t WHERE (date > @dt) GROUP BY pid) 
AS 'c'; 
+0

당신은'GROUP BY pid'를 사용하고 있기 때문에, 이미'DISTINCT'이므로, 당신은 그 수정자를 필요로하지 않습니다. – Barmar

답변

0

pid 당 계산식을 찾으십니까? 그렇다면이 간단한 쿼리입니다 :

SELECT pid, SUM(location like '%a%') as As, 
     SUM(location like '%b%') as Bs, 
     SUM(location like '%c%') as Cs 
FROM db.t 
WHERE (date > @dt) 
GROUP BY pid 
+0

아름답게 우아한 솔루션 인 Gordon. 고맙습니다. – James