조건에 만족하는 값들의 사이 를 조회 하는 쿼리 확인 부탁드립니다 0 2 1,982

by harus4 [2023.01.31 14:47:31]


idx|store| stock_date| stock_close
1	70	2023-01-18	1
2	70	2023-01-19	1
38	30	2023-01-26	1
39	70	2023-01-26	0
40	30	2023-01-30	0
41	30	2023-01-30	0
42	30	2023-01-30	0
43	30	2023-01-30	0
44	30	2023-01-30	0
45	30	2023-01-30	0
46	80	2023-01-20	1
47  80  2023-01-30  1

에서   오늘을 기점으로 가장 마지막 close 가 1 인것을 기준으로 오늘 날자 또는 지정한 날 사이에서 close가 0것들은 모두
close 가 1인 것은 마지막으로 등록된 값만 가지고 오는 쿼리를 짜려고 하는데 

SELECT *

from stockTable ds1

left join(

select max(stock_date) stock_date ,store, idx from stockTable ds where ds.stock_close =1 and ds.stock_date <= CURRENT_DATE() group by store

) ms on ds1.idx =ms.idx and ds1.stock_date<= CURRENT_DATE() and ms.stock_date <=ds1.stock_date

으로 했더니 정확한  값이 나오지 않는데 어디 부분을 수정해야 할까요?

 

결과 값은  아래처럼 store 에서 close값이 1인건 마지막 것들만 나오도록 하는 쿼리 입니다 도와주세요 ㅜ,ㅜ
2 70 2023-01-19 1
38 30 2023-01-26 1
39 70 2023-01-26 0
40 30 2023-01-30 0
41 30 2023-01-30 0
42 30 2023-01-30 0
43 30 2023-01-30 0
4 30 2023-01-30 0
45 30 2023-01-30 0
47 80 2023-01-30 1

 

by 마농 [2023.01.31 15:28:33]

GROUP BY store 하면서 idx 를 집계함수 없이 그냥 가져오네요.
이는 표준에 어긋나는 쿼리입니다. 다른 DB 에서는 오류나는 구문인데 MySQL 에서만 오류 안나고 실행이 됩니다.
이 때 가져오는 idx 는 여러 idx 중 어떤게 나올지 모릅니다. 원하는 idx 값이 아니죠.
조인조건을 idx 가 아닌 store 조건으로 해야죠.


by harus4 [2023.01.31 15:58:31]

left를 inner로 조건을 store로 변경하니 잘나옵니다 감사합니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입