2014-10-10 4 views
-1

일부 쿼리를 작성했는데 다음 쿼리 결과가 나타납니다.mysql 결과가 가로로 표시됩니다.

createdate SITE1 SITE2 SITE3 SITE4 SITE5 SITE6 SITE7 SITE8 SITE9 
10/2/2014 63  NULL NULL NULL NULL NULL NULL NULL NULL 
10/2/2014 NULL NULL NULL NULL NULL NULL NULL NULL 10 
10/3/2014 21  NULL NULL NULL NULL NULL NULL NULL NULL 
10/3/2014 NULL NULL NULL NULL NULL NULL NULL NULL 4 

이제 이와 같이 표시하고 싶습니다.

createdate SITE1 SITE2 SITE3 SITE4 SITE5 SITE6 SITE7 SITE8 SITE9 
10/2/2014 63  NULL NULL NULL NULL NULL NULL NULL 10 
10/3/2014 21  NULL NULL NULL NULL NULL NULL NULL 4 

참고 : 이미 SITE NAME을 (를) 그룹화하고 createdate했습니다.

는 그냥 SQL을 포장 SQL하여 다른 그룹을 추가 :

유는

enter code here 
select alldata.createdate, count(name), 
case when name = 'SITE1' then count(1) end AS SITE1, 
case when name = 'SITE2' then count(1) end AS SITE2, 
case when name = 'SITE3' then count(1) end AS SITE3, 
case when name = 'SITE4' then count(1) end AS SITE4, 
case when name = 'SITE5' then count(1) end AS SITE5, 
case when name = 'SITE6' then count(1) end AS SITE6, 
case when name = 'SITE7' then count(1) end AS SITE7, 
case when name = 'SITE8' then count(1) end AS SITE8, 
case when name = 'SITE9' then count(1) end AS SITE9, 
from 
(
    select total.createdate as createdate ,total.name as name from 
    (
    select distinct dtr.* , ps.name ,DATE_FORMAT(dt.create_time,'%Y-%m-%d') as createdate from di_dtb_task_result dtr 
    inner join di_dtb_task_data_detail dt 
    on dtr.task_id = dt.task_id and dt.user_id <> 10000001 
    left join dtb_user_info ui 
    on ui.id = dt.user_id and dtr.task_id = dt.task_id 
    left join dtb_point_site ps 
    on ps.id=ui.user_point_site_id and dtr.task_id = dt.task_id 
    where dtr.status <> 9 
    -- group by dtr.status ,dtr.task_id , ui.id,ui.user_point_site_id , ps.name 
    order by dtr.task_id 
    ) total 
    -- group by total.name , total.createdate 

) alldata 
group by alldata.createdate ,alldata.name 
+1

은 당신이 원하는 것을 제대로 우리에게 당신의 쿼리 및 상태를 보여주십시오 do, 여기 –

+0

은 그룹화 절에 문제가있는 것 같습니다. 작성일 10/2/2014가 두 번 나타나기 때문입니다. – mreiterer

답변

0

간단한 솔루션 ... 어떤 멋진 아이디어 나 뭔가 PLS 나 제안이 있습니까.

select alldata.createdate, sum(SITE1), sum(SITE2), sum(SITE3), sum(SITE4), sum(SITE5), sum(SITE6), sum(SITE7), sum(SITE8), sum(SITE9) 
// inner select 
group by alldata.createdate 
+0

ur 답장을 보내 주셔서 감사합니다. 이미 시도해 봤습니다. 그것의 잘못된 길 .. – user1626038

+0

잘못된 길은 무엇을 의미합니까? – mreiterer

+0

그게 내 경우에 잘못되었음을 의미합니다 .createdate SITE1 SITE2 SITE3 SITE4 SITE5 SITE6 SITE7 SITE8 SITE9 2011/10/03 73 NULL NULL NULL NULL NULL NULL NULL NULL – user1626038

0

내가 여기

select createdate, max(site1),max(site2),max(site3),max(site4),max(site5),max(site6),max(site7), max(site8),max(site9) from (..your_inner_query..) group by createdate 

당신이 당신의 참조를 위해 샘플 sqlfiddle로 이동() 함수를 사용하면 최대를 시도 할 수 있습니다 생각

+0

ur 답장을 보내 주셔서 감사합니다.하지만 그 질문은 잘못되었습니다. – user1626038

+0

sqlfiddle에 표시된 결과가 사용자가 요청한 것입니다. 뭐가 잘못 되었 니 ? 자세한 내용과 세부 사항을 알려주십시오. – Logan

+0

bro site fielst는 문자열 필드입니다. – user1626038

관련 문제