SELECT
WMS.COMPANYID /*회사코드*/
,WMS.DIVISIONID /*사업장코드*/
,WMS.SOID /*수주번호*/
,WMS.CUSTOMERID /*거래처코드*/
,WMC.CUSTOMERNAME /*거래처명*/
,WMS.ORDERDATE /*수주일자*/
,WMS.DELIVERYDATE /*납기일자*/
,WML.PRICE /*수주금액*/
,WML.SOLINENO /*행번*/
,WML.ITEMID /*아이템코드*/
,WMI.ITEMNAME /*아이템명*/
,WML.ORDERQTY /*수주수량*/
,WML.SHIPQTY /*출고수량*/
,(WML.ORDERQTY - WML.SHIPQTY) AS NOTSHIPQTY /*미출고수량*/
,WML.SHIPSTATE /*출고상태*/
,WMS.REMARK /*설명*/
,WMS.ISVALID
FROM
WM_SALESORDER WMS
INNER JOIN WM_SALESORDERLINE WML ON WMS.SOID = WML.SOID AND WML.ISVALID = 'Y'
LEFT JOIN WM_CUSTOMERINFO WMC ON WMS.CUSTOMERID = WMC.CUSTOMERID AND WMS.COMPANYID = WMC.COMPANYID AND WMS.DIVISIONID = WMC.DIVISIONID
LEFT JOIN WM_ITEMINFO WMI ON WML.ITEMID = WMI.ITEMID
WHERE
WMS.COMPANYID = 1000
AND WMS.DIVISIONID = 1000
AND WMS.ORDERDATE BETWEEN '2021-01-01' AND '2021-01-30'
AND WMS.SOID LIKE '%SO%'
위 쿼리문에서 주의 깊게 봐야될 조건은 BETWEEN 조건 AND 조건 과, LIKE '%' 이다.
BETWEEN은 어떤 값보다는 작고 어떤 값보다는 큰 조건을 만들 때 편리하게 사용할 수 있다.
어떤 단어를 검색할 때 특정 키워드만 사용하고 싶으면 %를 활용하면 된다.
'-' : 글자숫자를 정해줌(EX 컬럼명 LIKE '홍_동')
'%' : 글자숫자를 정해주지않음(EX 컬럼명 LIKE '홍%')
SELECT * FROM WM_SALESORDER WHERE SOID = 'SO2011120002'
BEGIN TRAN
DELETE FROM WM_SALESORDER WHERE SOID = 'SO2011120002'
ROLLBACK TRAN
SELECT * FROM WM_SALESORDER WHERE SOID = 'SO2011120002'
위 쿼리문은 트랜잭션을 실험해보기 위함이다.
BEGIN TRAN이 실행된 뒤 다음에 실행되는 쿼리문을 ROLLBACK TRAN을 이용하여 되돌린 후 다시 SELECT문을
사용하여 DELETE되기 전으로 되돌아 갔는지 확인하였고 결과는 ROLLBACK이 성공적으로 이루어 졌다.
INNER JOIN LEFT OR RIGHT OUTER JOIN
LEFT OUTER JOIN 과 LEFT JOIN은 같고 위에 WHERE 절이 빠지게 되면 교집합 부분도 포함하게 된다.
'Database' 카테고리의 다른 글
MySQL의 GROUP_CONCAT 함수: 여러 값을 하나의 문자열로 결합하기 (0) | 2024.08.23 |
---|---|
기존 테이블에 속성 추가 (0) | 2021.11.11 |
동적 피벗 테이블 (0) | 2021.01.27 |
mssql - ISNULL, IN, Procedure (0) | 2021.01.18 |