테스트 사이트 - 개발 중인 베타 버전입니다

월별로 출력하고 싶습니다. 채택완료

페레이라 2년 전 조회 2,089

2020-03-07

2020-05-07

2020-07-07

 

이렇게 db에 날짜와 수량으로 저장되어 있습니다.

 

for문을 사용하니 저렇게 3개만 출력되고 있는데

빠진 달은 수량을 0으로 출력 하고 1~12월 까지 한번에 출력할수 있는 방법이 있을까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
2년 전

질문을 할때는 남이 알아먹을 수 있게 필드명까지 명시를 해서 질문 하세요

게시판이겠죠?

등록시 여분필드에 월별로 저장 되도록 만드세요( 2023-04 형식)

현재 등록된 게시물은 리스트에서 다음 코드를 넣어서 한번 호출하고 코드를 삭제 하세요

sql_query("update $write_table set wr_1=LEFT(날짜필드, 7) ");

 

월별 카운트

$yy= date("Y", G5_SERVER_TIME); $mon1=$yy.'-01'; $mon12 = $yy.'-12';

$qq = sql_query("select SUBSTRING(wr_1, 6, 2) as mon, sum(수량필드) as cnt from $write_table where wr_1 between '$mon1' and '$mon12' group by wr_1");

while($row=sql_fetch_array($qq)) $mlist[1*$row['mon']] = $row['cnt'];

 

print_r($mlist); //<--- for($i=1; $i<13; $i++) 문으로 출력하면 되겠습니다

 

 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

페레이라
2년 전
해결했습니다. 감사합니다 ㅎㅎ

댓글을 작성하려면 로그인이 필요합니다.

달력?에 해당하는 날짜를 저장한 테이블과

left join으로 처리하면 됩니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

2년 전

테이블 상세구조나 데이터 샘플이 없기 때문에

임의로 가상데이터를 만들고 추출하는 샘플입니다.

 

연도 범위 안에서 검색하고 

없는 데이터는 가상으로 만들고 조인을 하는 방식입니다.

 

실제 테이블 데이터는 tbl 에 매칭되어야 하는 부분임을 인지하고

대략적인 확인을 하면 될것 같습니다.

 

답변과는 별개로 쿼리로 가공하는 대신

어플리케이션에서 코드로 가공하는 방법도 추천드립니다.

 

</p>

<p>-- SET @y = '2021';

SET @y = '2020';</p>

<p> </p>

<p>SELECT 

     CONCAT(@y, '-', tmp.m) col_m 

    ,SUM(CASE WHEN tbl.quantity_column IS NULL THEN 0 ELSE tbl.quantity_column END) col_qty 

FROM

    (

        SELECT '01' m FROM DUAL UNION ALL 

        SELECT '02' m FROM DUAL UNION ALL 

        SELECT '03' m FROM DUAL UNION ALL 

        SELECT '04' m FROM DUAL UNION ALL 

        SELECT '05' m FROM DUAL UNION ALL 

        SELECT '06' m FROM DUAL UNION ALL 

        SELECT '07' m FROM DUAL UNION ALL 

        SELECT '08' m FROM DUAL UNION ALL 

        SELECT '09' m FROM DUAL UNION ALL 

        SELECT '10' m FROM DUAL UNION ALL 

        SELECT '11' m FROM DUAL UNION ALL 

        SELECT '12' m FROM DUAL 

    ) tmp 

    LEFT OUTER JOIN 

    (

        SELECT '2020-03-07' date_column, 1 quantity_column FROM DUAL UNION ALL 

        SELECT '2020-05-07' date_column, 2 quantity_column FROM DUAL UNION ALL 

        SELECT '2020-05-11' date_column, 3 quantity_column FROM DUAL UNION ALL 

        SELECT '2020-07-07' date_column, 4 quantity_column FROM DUAL UNION ALL 

        SELECT '2021-03-07' date_column, 5 quantity_column FROM DUAL UNION ALL 

        SELECT '2021-05-07' date_column, 6 quantity_column FROM DUAL UNION ALL 

        SELECT '2021-05-11' date_column, 7 quantity_column FROM DUAL UNION ALL 

        SELECT '2021-07-07' date_column, 8 quantity_column FROM DUAL

    ) tbl ON 

         -- SUBSTRING(tbl.date_column, 1, 4) = '2020'

            SUBSTRING(tbl.date_column, 1, 4) = @y

        AND SUBSTRING(tbl.date_column, 6, 2) = tmp.m 

GROUP BY 

    tmp.m 

;</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인