나는 아래와 같은 테이블이 있습니다
user_id | month, | value
---------+------------+--------
1 | 2013-02-01 | 1
1 | 2013-01-01 | 0
1 | 2013-03-01 | 5
2 | 2013-02-01 | 1
아마도 a user_id
는 month
하나 이상을 가질 수 없습니다 .
쿼리 문에 쿼리하려는 달을 넣을 수 있다고 가정 해 보겠습니다. 아래와 같이
SELECT user_id, (bla bla bla) AS '2013-03-01', (bla bla bla) AS '2013-02-01'
최소한의 쿼리와 사후 처리 (예 : Python 또는 PHP 사용)로 아래와 같은 결과를 얻으려면 어떻게해야합니까?
user_id | 2013-03-01 | 2013-02-01 | 2013-01-01
---------+------------+------------+------------
1 | 5 | 1 | 0
2 | NULL | 1 | NULL
조건부 집계를 사용하여 필요한 결과 집합을 가져올 수 있습니다.
SELECT user_id,
MAX(CASE WHEN month = '2013-03-01' THEN value END) AS '2013-03-01',
MAX(CASE WHEN month = '2013-02-01' THEN value END) AS '2013-02-01',
MAX(CASE WHEN month = '2013-01-01' THEN value END) AS '2013-01-01'
FROM mytable
GROUP BY user_id
미리 정의 된month
값 집합 이있는 한 작동 합니다. 그렇지 않으면 동적 SQL을 사용해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다