데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

SP where 문 조건이 변하는 쿼리

나는야 2020.02.24 17:17 Views : 625

안녕하세요


SP를 곧 당장 작성해야하는데  너무 머리가 아프군요 ㅠㅠ


초보자 도움 부탁드려요




테이블에는 DATE, ID, TYPE , COUNT값이 있습니다.


이중 저는


어떤 순간에는


SELECT  DATE, ID   FROM TABLE

WHERE DATE = 20190201   AND TYPE =1 AND COUNT <100

GROUP BY DATE, ID 



즉 특정 TYPE 의 카운트 조건인 ID들이 필요하고


어떤 순간에는


DATE = 20190201

TYPE=1 AND COUNT <40 이면서    

TYPE=5 AND COUNT > 5    이런식의 조건을 가진 모든 ID  



또 어떤 순간에는

DATE = 20190201

TYPE=1 AND COUNT <40 이면서  

TYPE=5 AND COUNT > 5    이면서

TYPE=10 AND COUNT  <= 6  인 조건을 가진 모든 ID 


가 필요한 SP를 만들려고 합니다.



어떤 방향으로 해야할지 좀 감이안와서 ㅠㅠ 


조언을 주실 수 있을까요?





------------------------------------------------------------------------------------------------

제가 짠 sp 는 다음과 같은데용

좀 튜닝이 가능할지도요





  DEClARE @DATE INT
  DECLARE @nTYPE1 INT
  DEClARE @nCount1 INT
  DECLARE @nTYPE2 INT
  DEClARE @nCount2 INT
  DECLARE @nTYPE3 INT
  DEClARE @nCount3 INT
  DECLARE @nTYPE4 INT
  DEClARE @nCount4 INT
  DECLARE @nTYPE5 INT
  DEClARE @nCount5 INT

  SET @DATE = 20200222
  SET @nTYPE5 = ''
  SET @nCount5 = ''
  SET @nTYPE4 = ''
  SET @nCount4 = ''
  SET @nTYPE3 = 15
  SET @nCount3 = 1
  SET @nTYPE2 = 391
  SET @nCount2 = 1
  SET @nTYPE1 = 561
  SET @nCount1 = 3



  IF @nTYPE5 <> ''
  BEGIN
  SELECT  DATE, ID
  FROM [dbo].[table] WITH (NOLOCK)
  WHERE DATE=@DATE  AND TYPE=@nTYPE5 AND Count >= @nCount5 AND ID IN (SELECT ID FROM  [dbo].[table]
   WHERE DATE=@DATE  AND TYPE=@nTYPE4 AND Count >= @nCount4 AND ID IN (SELECT ID FROM  [dbo].[table]
    WHERE DATE=@DATE  AND TYPE=@nTYPE3 AND Count >= @nCount3 AND ID IN (SELECT ID FROM  [dbo].[table]
  WHERE DATE=@DATE  AND TYPE=@nTYPE2 AND Count >= @nCount2 AND ID IN (SELECT ID FROM  [dbo].[table]
   WHERE DATE=@DATE  AND TYPE=@nTYPE1 AND Count >= @nCount1 ))))
   GROUP BY DATE,ID
   END

   ELSE IF @nTYPE4 <> ''
     BEGIN
  SELECT  DATE, ID
  FROM [dbo].[table] WITH (NOLOCK)
  WHERE DATE=@DATE  AND TYPE=@nTYPE4 AND Count >= @nCount4 AND ID IN (SELECT ID FROM  [dbo].[table]
    WHERE DATE=@DATE  AND TYPE=@nTYPE3 AND Count >= @nCount3 AND ID IN (SELECT ID FROM  [dbo].[table]
  WHERE DATE=@DATE  AND TYPE=@nTYPE2 AND Count >= @nCount2 AND ID IN (SELECT ID FROM  [dbo].[table]
   WHERE DATE=@DATE  AND TYPE=@nTYPE1 AND Count >= @nCount1 )))
   GROUP BY DATE,ID
   END


   ELSE IF @nTYPE3 <> ''
     BEGIN
  SELECT  DATE, ID
  FROM [dbo].[table] WITH (NOLOCK)
    WHERE DATE=@DATE  AND TYPE=@nTYPE3 AND Count >= @nCount3 AND ID IN (SELECT ID FROM  [dbo].[table]
  WHERE DATE=@DATE  AND TYPE=@nTYPE2 AND Count >= @nCount2 AND ID IN (SELECT ID FROM  [dbo].[table]
   WHERE DATE=@DATE  AND TYPE=@nTYPE1 AND Count >= @nCount1 ))
   GROUP BY DATE,ID
   END

      ELSE IF @nTYPE2 <> ''
     BEGIN
  SELECT  DATE, ID
  FROM [dbo].[table] WITH (NOLOCK)
     WHERE DATE=@DATE  AND TYPE=@nTYPE2 AND Count >= @nCount2 AND ID IN (SELECT ID FROM  [dbo].[table]
   WHERE DATE=@DATE  AND TYPE=@nTYPE1 AND Count >= @nCount1 )
   GROUP BY DATE,ID
   END

ELSE 
     BEGIN
  SELECT  DATE, ID
  FROM [dbo].[table]WITH (NOLOCK)
       WHERE DATE=@DATE  AND TYPE=@nTYPE1 AND Count >= @nCount1
    GROUP BY DATE,ID
   END

   GO









No. Subject Author Date Views
10550 두테이블간에 인서트 업데이트를 하려고 합니다. [1] 아싸라비아콜롬비아 2020.03.10 620
10549 오라클 쿼리 질문입니다. [1] 정보보안 2020.03.10 526
10548 SQL 백업스케줄러 실행시 나는야 2020.03.09 530
10547 sql agent 에 등록해둔 스케쥴 에러나더라도 강제로 실행할수있는방법은없나요? 쭈우니 2020.03.04 567
10546 매일 새로생성되는 DB에 권한을 부여하는방법 문의드립니다 쭈우니 2020.03.02 556
10545 데이타베이스 연결시 문제점 [2] 희망나라 2020.03.02 597
» SP where 문 조건이 변하는 쿼리 나는야 2020.02.24 625
10543 SQL Migration 작업 문의 [2] 이얌 2020.02.20 828
10542 mssql 여러버젼이 있고 sequence 를 쓰고 싶을때 jaksal67 2020.02.12 597
10541 쿼리 질문입니다. [2] 희망나라 2020.02.12 780
10540 행열 바꾸기 도와주세요 [2] 세바 2020.01.21 1038
10539 대용량 로그테이블 설계 질문드립니다 [3] freighter 2020.01.20 1069
10538 그룹별 입력 날짜 기준 최신 데이터 하나씩만 가져오는 법 [2] 잠스 2020.01.13 788
10537 DB서버 shutdown 현상 [2] 정보맨 2020.01.12 943
10536 머리가.. 뿌개질껏 같아요. 돌머리의 한계인가봐요 테이블 열 합치기 [1] 약한심장 2020.01.08 886
10535 쿼리 질문 입니다. [1] 허당 2020.01.07 914
10534 변수에 따라 조건문이 다를 경우 쿼리 [2] 뮤르르 2020.01.02 885
10533 Database Table 설계 관련 [2] 뽀야미 2020.01.02 814
10532 SSMS 쿼리 실행 출력 값이 2012 버전에서 다르게 나오는 현상 [1] 천재sizin 2020.01.01 796
10531 동일 테이블내에 id가 다른데 이름이 같경우 찾는 방법 문의드립니다.. [3] 우꾸무꾸 2019.12.20 711





XE Login