답변 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++) 문으로 출력하면 되겠습니다
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
테이블 상세구조나 데이터 샘플이 없기 때문에
임의로 가상데이터를 만들고 추출하는 샘플입니다.
연도 범위 안에서 검색하고
없는 데이터는 가상으로 만들고 조인을 하는 방식입니다.
실제 테이블 데이터는 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>
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인