월별로 출력하고 싶습니다.

월별로 출력하고 싶습니다.

QA

월별로 출력하고 싶습니다.

본문

2020-03-07

2020-05-07

2020-07-07

 

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

 

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

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

이 질문에 댓글 쓰기 :

답변 3

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

게시판이겠죠?

등록시 여분필드에 월별로 저장 되도록 만드세요( 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++) 문으로 출력하면 되겠습니다

 

 

 

 

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

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

 

연도 범위 안에서 검색하고 

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

 

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

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

 

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

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

 


-- SET @y = '2021';
SET @y = '2020';
 
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 
;
답변을 작성하시기 전에 로그인 해주세요.
전체 93
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT