sql 쿼리 질문입니다.!! 0 1 783

by 십이장기 [SQL Query] [2020.06.08 18:03:13]


데이터에

 

A    판매금액     판매금      10000

A    적립금액     적립금      20000

A    기준일자     기준일       20

B     판매금액    판매금      10000

 

이렇게 4개의 레코드가 있을때

이걸 

A    판매금액.판매금 >= 10000 AND 적립금액.적립금>=20000 AND 기준일자.기준일>=20

B    판매금액.판매금>=10000

 

이런식으로 단 A,B각각 합친걸로 두개의 레코드만 나오게 하고싶은데 어떻게 하면 좋을까요??ㅠㅠ제 기초 실력으론 잘안되네요 아 참고로 >=문자열은 항상 고정입니다 AND도 두번째부터는 꼭 AND문자열로 묶이구요

 

일단 저 위에 나오는 쿼리가 

대충

SELECT    a.TIER_TYPE_CD            AS tierTypeCd
                , b.DS_NM                    AS dsNm
                , c.FIELD_DESC                AS fieldDesc
                , d.COND_VAL                AS condVal
        FROM     a a1
        JOIN     b b1 ON a1.id = b1.ID
        JOIN     c c1 ON a1.id = c1.id
        JOIN     d d1 ON a1.id = d1.id

이런식일때 a.TIER_TYPE_CD별로 묶어서 각각 condVal을 AND로어떻게 하면 묶을수있을까요?

||로만 묶으니 좀 쿼리가 이상해지더라구요 ㅠ 

 

by 마농 [2020.06.09 08:23:46]
WITH t AS
(
SELECT 'A' tier_type_cd, '판매금액' ds_nm, '판매금' field_desc, '10000' cond_val FROM dual
UNION ALL SELECT 'A', '적립금액', '적립금', '20000' FROM dual
UNION ALL SELECT 'A', '기준일자', '기준일', '20'    FROM dual
UNION ALL SELECT 'B', '판매금액', '판매금', '10000' FROM dual
)
SELECT tier_type_cd
     , LISTAGG(ds_nm ||'.'|| field_desc ||' >= '|| cond_val, ' AND ')
       WITHIN GROUP(ORDER BY ds_nm DESC) x
  FROM t
 GROUP BY tier_type_cd
;
http://gurubee.net/article/55512

 

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