SP where 문 조건이 변하는 쿼리

나는야 2020.02.24 17:17 Views : 753

안녕하세요


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
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 39612
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 21360
10563 프로시져 매개변수를 mybatis처럼 이용할수 있나요? [2] 우라누스 2020.03.29 649
10562 150만건 인서트에 대한 문의 LDF 파일 쓰기 속도 곰네 2020.03.28 923
10561 MSSql Read Write 분리 가능한가요? [1] Forenty 2020.03.26 828
10560 레코드를 여러번 반복 출력 하려고 합니다... [2] 삼미슈퍼스타 2020.03.25 1289
10559 IDENTITY의 증가관련 질문 [2] 쏠남 2020.03.25 648
10558 LIKE절의 형태에 대한 질문입니다. bctr 2020.03.22 580
10557 고정된 숫자값을 insert할때마다 늘리고 싶습니다... [1] yotaggu 2020.03.20 685
10556 like 검색 속도관련 냥냥 2020.03.20 795
10555 (오라클) 여러개의 날짜 중 특정 날짜와 가장 가까운 날짜를 구할 수 있을까요? [1] 정보보안 2020.03.15 2395
10554 쿼리 질문입니다. greenseed 2020.03.15 663
10553 select 쿼리 결과 속도를 높일수 있는 방법이 있을까요? [1] 냠냠11 2020.03.14 784
10552 프로파일러의 duration 문의 드립니다. [1] compius5 2020.03.13 659
10551 log파일 질문입니다. [2] 희망나라 2020.03.12 688
10550 두테이블간에 인서트 업데이트를 하려고 합니다. [1] 아싸라비아콜롬비아 2020.03.10 720
10549 오라클 쿼리 질문입니다. [1] 정보보안 2020.03.10 646
10548 SQL 백업스케줄러 실행시 나는야 2020.03.09 616
10547 sql agent 에 등록해둔 스케쥴 에러나더라도 강제로 실행할수있는방법은없나요? 쭈우니 2020.03.04 677
10546 매일 새로생성되는 DB에 권한을 부여하는방법 문의드립니다 쭈우니 2020.03.02 656
10545 데이타베이스 연결시 문제점 [2] 희망나라 2020.03.02 704
» SP where 문 조건이 변하는 쿼리 나는야 2020.02.24 753





XE Login