zcompany.sql
0.01MB
zmoney.sql
0.00MB
zpan.sql
0.00MB
zproduct.sql
0.00MB
2023년 매입매출을 보여주세요
1. 날짜, 구분, 거래처명, 제품명, 제품규격, 수량, 단가 합계
2. 날짜, 구분, 거래처명, (제품명+제품규격), 수량, 단가 합계
SELECT a.indate, a.type, b.cname, c.pname, c.psize, a.cnt, a.price, a.total FROM zpan as a LEFT JOIN zcompany as b on a.cid = b.id LEFT JOIN zproduct as c on c.id = a.pid
WHERE SUBSTRING(a.indate,1,4) = '2023';
SELECT a.indate, a.type, b.cname, CONCAT(c.pname,' ', c.psize), a.cnt, a.price, a.total FROM zpan as a LEFT JOIN zcompany as b on a.cid = b.id LEFT JOIN zproduct as c on c.id = a.pid
WHERE a.indate BETWEEN '2023-01-01' AND '2023-12-31';
2023년 거래처별, 구분별 합계를 보여주세요(매출,매입)
1. 거래처명, 구분, 합계
2023년 거래처별, 구분별 금액합계을 보여주세요(입금,지급)
2. 거래처명, 구분, 금액합계
SELECT b.cname, a.type, SUM(a.total) FROM zpan as a LEFT JOIN zcompany as b on a.cid = b.id WHERE SUBSTRING(a.indate,1,4)= '2022' GROUP BY a.cid, a.type ORDER BY b.cname, a.type;
SELECT b.cname, a.type, SUM(a.money) FROM zmoney as a LEFT JOIN zcompany as b on a.cid = b.id WHERE SUBSTRING(a.indate,1,4)= '2023' GROUP BY a.cid, a.type ORDER BY b.cname, a.type;
2023년 매입,매출,입금,지급을 UNION ALL 을 사용하여 보여주세요
1. 날짜, 거래처명, 구분, (제품명+제품규격) 또는 결제방법, 수량, 단가, 합계, 금액
정렬 : 날짜, 생성일
SELECT a.indate as sort1, b.cname, a.type, CONCAT(c.pname,' ', c.psize), a.cnt, a.price, a.total, a.dtcreate as sort2 FROM zpan as a LEFT JOIN zcompany as b on a.cid = b.id LEFT JOIN zproduct as c on c.id = a.pid WHERE a.indate BETWEEN '2023-01-01' AND '2023-12-31'
UNION ALL
SELECT a.indate as sort1, b.cname, a.type, a.method, '', '', a.money, a.dtcreate as sort2 FROM zmoney as a LEFT JOIN zcompany as b on a.cid = b.id WHERE a.indate BETWEEN '2023-01-01' AND '2023-12-31'
ORDER BY sort1, sort2;
GROUP BY 사용해보기
SELECT b.cname, a.type, SUM(a.total), 0, 0, 0 FROM zpan as a LEFT JOIN zcompany as b on a.cid=b.id WHERE type='매출' GROUP BY a.cid
UNION ALL
SELECT b.cname, a.type, 0, SUM(a.total), 0, 0 FROM zpan as a LEFT JOIN zcompany as b on a.cid=b.id WHERE type='매입' GROUP BY a.cid
UNION ALL
SELECT b.cname, a.type, 0, 0, SUM(a.money), 0 FROM zmoney as a LEFT JOIN zcompany as b on a.cid=b.id WHERE type='입금' GROUP BY a.cid
UNION ALL
SELECT b.cname, a.type, 0, 0, 0, SUM(a.money) FROM zmoney as a LEFT JOIN zcompany as b on a.cid=b.id WHERE type='지급' GROUP BY a.cid
ORDER BY cname, type;
IF문으로 만들어보기
SELECT b.cname, a.type, SUM(IF(a.type='매출', a.total, 0)), SUM(IF(a.type='매입', a.total, 0)), 0, 0
FROM zpan as a LEFT JOIN zcompany as b on a.cid=b.id
GROUP BY a.cid
UNION ALL
SELECT b.cname, a.type, 0, 0, SUM(IF(a.type='입금', a.money, 0)), SUM(IF(a.type='지급', a.money, 0))
FROM zmoney as a LEFT JOIN zcompany as b on a.cid=b.id
GROUP BY a.cid
ORDER BY cname;
1. 2023년 매출은?
SELECT SUM(total) from zpan WHERE SUBSTRING(indate,1,4) = '2023' and type = '매출';
거래처명 매출 매입 지금 입금 잔액을 한줄로 표시
UPDATE zcompany SET tmoney = 0;
UPDATE zcompany SET tmoney = smoney
+ IFNULL((SELECT SUM(total) FROM zpan WHERE zpan.cid = zcompany.id and type = '매출'),0)
- IFNULL((SELECT SUM(total) FROM zpan WHERE zpan.cid = zcompany.id and type = '매입'),0)
+ IFNULL((SELECT SUM(money) FROM zmoney WHERE zmoney.cid = zcompany.id and type = '지급'),0)
-IFNULL((SELECT SUM(money) FROM zmoney WHERE zmoney.cid = zcompany.id and type = '입금'),0);
SELECT a.cname, SUM(t1), SUM(t2), SUM(t3), SUM(t4),tmoney,(smoney+SUM(t1)-SUM(t2)+SUM(t3)-SUM(t4))
FROM(
SELECT cid as s1, SUM(IF(type='매출', total, 0)) as t1, SUM(IF(type='매입', total, 0)) as t2, 0 as t3, 0 as t4
FROM zpan
GROUP BY cid
UNION ALL
SELECT cid as s1, 0 as t1, 0 as t2, SUM(IF(type='지급', money, 0)) as t3, SUM(IF(type='입금', money, 0)) as t4
FROM zmoney
GROUP BY cid
) as k
LEFT JOIN zcompany as a on k.s1=a.id
GROUP BY s1;
'Database' 카테고리의 다른 글
[DB] 외부/다른서버에서 DB서버로 접속하게 설정하는 방법 (0) | 2023.03.17 |
---|---|
[DB]JOIN문 (0) | 2023.02.15 |
[DB]데이터 다루기 (0) | 2023.02.15 |
[DB]기초 Query문 (0) | 2023.02.15 |
[DB]설계하기 (0) | 2023.02.15 |