고양이개발자
10
2022-06-23 18:02:49
6
159

쿼리 질문입니다.


안녕하세요.

기존에 있던 쿼리를 약간 수정하고 싶은데 마땅한 방법이 생각나지 않아서 고수분들의 도움을 받고자 글을 올리게 되었습니다.


SELECT IFNULL(reg_dt, #{inRegDt}) as apply_dt

FROM REG_TABLE

WHERE reg_dt = #{inRegDt}


이게 만약 기존 쿼리라면


SELECT IFNULL(reg_dt, #{inRegDt}) as apply_dt

FROM REG_TABLE

WHERE reg_dt BETWEEN #{inRegStartDt} AND #{inRegEndDt}


이렇게 조건을 바꾸고 싶다면 빨간 부분을 어떻게 변경하면 좋을까요?ㅠㅠ

0
  • 답변 6

  • C#린이
    3k
    2022-06-23 18:21:56
    조건 변경에 따른 원하는 결과가 무엇인가요?

    그것부터 얘기를 해주셔야 답변이 가능합니다.
  • 고양이개발자
    10
    2022-06-23 18:40:21

    C#린이

    아 그걸 안적었네요 죄송합니다ㅠ

    기존에는 등록일자 2022-06-23을 입력 받아서 2022-06-23에 있는 금액에 대한 합계를 보여주는 쿼리였습니다.

    = 기존 결과 =

    등록일자        합계

    2022-06-23   2,000

    이 때 테이블에서 조회한 등록일자가 null값이면 입력 받은 등록일자를 출력해줍니다.


    변경하고자 하는 방향은

    등록기간을 받아서 2022-06-20 ~ 2022-06-23 해당 기간에 조회된 금액에 대한 합계를 보여주고 싶습니다.

    = 변경 결과 =

    등록일자        합계

    2022-06-20   1,000

    2022-06-22   500

    2022-06-23   2,000

    이 때도 테이블에서 조회한 등록일자가 null값이면 입력 받은 해당 등록일자를 출력해주고 싶습니다.

  • C#린이
    3k
    2022-06-23 20:37:14

    고양이개발자 //


    1. 위의 예제에 따르면 2022-06-20 ~ 2022-06-23

    해당기간으로 조회시 2022-06-21 가 빠져있는데.

    금액이 없는 날짜는 빠지는게 맞나요?


    2. 합계는 어느 테이블 어느 컬럼에서 가지고 오는지요?

  • s1s2dasxasfas
    12
    2022-06-23 21:00:50 작성 2022-06-23 21:03:18 수정됨


    SELECT 

      SUM(금액) total_amt

      ,apply_dt

    FROM 

    (

       SELECT 

        IFNULL(reg_dt, '20220620') as apply_dt

       , 금액

       FROM REG_TABLE

    WHERE reg_dt BETWEEN '20220620' AND '20220623'

    OR         reg_dt IS NULL

    GROUP BY apply_dt


    이런식으로 하면 되지않을까용? 돌려보진않아서 참고정도만...

  • 고양이개발자
    10
    2022-06-24 10:21:05

    C#린이


    1. 데이터가 없는 날짜는 빠집니다.
    2. REG_TABLE에서 가져옵니다!

  • C#린이
    3k
    2022-06-24 18:16:36

    저 두 쿼리 모두 REG_DT를 검색조건으로 걸었기에

    등록일자가 없는 데이터는 목록에 없을꺼고요.

    고로, IFNULL은 해당 쿼리에서 의미없습니다.


    REG_DT에 날짜값만 들어있다 가정하고

    쿼리를 짜면 다음과 같습니다.



    SELECT REG_DT AS APPLY_DT
                  ,SUM(AMOUNT) AS TOTAL_AMOUNT

       FROM REG_TABLE

    WHERE reg_dt BETWEEN '20220620' AND '20220623'

    GROUP BY REG_DT
  • 로그인을 하시면 답변을 등록할 수 있습니다.