database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7014 게시물 읽기
No. 7014
2개의 select을
작성자
썬큐스트
작성일
2016-11-10 09:28ⓒ
2016-11-10 09:33ⓜ
조회수
3,128

2개의 다른 select문을 조회해서 각각의 데이터들이 있는데

 

그 2개를 하나로 묶어서 조회를 하라고 하네요... 그게가능한가요..

 

첫번쨰 select문에는  이런식으로 데이터가 나오고

월별  전년   당년       증감(당년-전년) 

 01   0.0    15,000    15,000

 

 

두번쨰 select문에는 이런식으로 데이터가 있는데(참고로 amountPaid의 상위 10개를 뽑고 상위 10개가 아닌 것들은 하나로 합처서 custno = 99999 company = 'Other Companies'로 amountpaid는 상위 10개를 제외한 모든 금액의 합계로 나오게 되었어요)

custno    company  amountpaid

1111         jyp              15,000

 99999  Other companies  99,999

 

저 두개의 select를 하나로 묶어서 조회가 가능한가요??,,

이 글에 대한 댓글이 총 4건 있습니다.

서로 다른 형태의 결과를 무작정 합친다고 되는게 아니죠.
최종 결과 테이블의 구성을 어떻게 할지를 정해야죠.
제 생각에는 결과 구성표를 구상하는것 자체가 어려울 듯 하네요.
결과 구성표만 확정되면 SQL 은 얼마든지 작성 가능합니다.


그리고 두 집합의 SQL 도 확인할 수 있으면 좋겠죠.
하나의 테이블에서 각각의 결과를 추출하는 것인지?
서로 완전 별개의 다른 테이블인지?

마농(manon94)님이 2016-11-10 10:54에 작성한 댓글입니다.

 하나의 테이블에서 각각의 결과를 추출 한것입니다..

 

첫번째 sql은

SELECT saleMM

     , sum(case when saleYYYY < :saleYYYY then amountpaid else 0 end) AS amountpaid_prior

     , sum(case when saleYYYY = :saleYYYY then amountpaid else 0 end) AS amountpaid_thisyear

     , sum(case when saleYYYY = :saleYYYY then amountpaid else 0 end)

     - sum(case when saleYYYY < :saleYYYY then amountpaid else 0 end) AS amountpaid_updown

     

     , sum(case when saleYYYY < :saleYYYY then freight else 0 end) AS freight_prior

     , sum(case when saleYYYY = :saleYYYY then freight else 0 end) AS freight_thisyear

     , sum(case when saleYYYY = :saleYYYY then freight else 0 end)

     - sum(case when saleYYYY < :saleYYYY then freight else 0 end) AS freight_updown

  FROM ( 

         SELECT SUBSTRING(CONVERT(varchar, saledate, 112), 1, 4) AS saleYYYY -- 2014 

              , SUBSTRING(CONVERT(varchar, saledate, 112), 5, 2) AS saleMM   -- 01~12

              , AmountPaid AS AmountPaid                                     

              , Freight AS Freight 

              , custno AS custno                                         

           FROM orders

          WHERE SUBSTRING(CONVERT(varchar, saledate, 112), 1, 4) BETWEEN CONVERT(varchar, CONVERT(int, :saleYYYY)-1) and :saleYYYY

       ) A

 

두번쨰 sql은

SELECT A.custno 

              , B.company

              , A.amountpaid

  FROM ( 

         SELECT TOP 10 

                custno

              , SUM(AmountPaid) AS AmountPaid

           From orders

          WHERE 1=1 

            AND SUBSTRING(CONVERT(varchar, saledate, 112), 1, 4) = :saledate

          GROUP BY custno

          ORDER BY 2 desc

        ) A

     , customer B                           

 WHERE 1=1

   AND A.custno = B.custno

 UNION ALL

 SELECT '9999' AS custno

      , 'Other Companies' AS company

      , sum(amountpaid)

   FROM orders

  WHERE 1=1

    AND SUBSTRING(CONVERT(varchar, saledate, 112), 1, 4) = :saledate

    AND custno NOT IN (

                 SELECT custno FROM(

                               SELECT TOP 10 custno

                                    , SUM(AmountPaid) AS AmountPaid

                                 From orders

                                WHERE 1=1 

                                  AND SUBSTRING(CONVERT(varchar, saleate, 112), 1, 4) = 2014

                                GROUP BY custno

                                ORDER BY 2 desc

                                ) BB

이렇게 인데..

 

생초보라 영 감이 안잡히네요...

 

저 2개 짜는것도 몇일 걸려서...

썬큐스트님이 2016-11-10 11:09에 작성한 댓글입니다.
이 댓글은 2016-11-10 11:10에 마지막으로 수정되었습니다. Edit

답변드린대로 쿼리 작성이 문제가 아니라

결과표 구성이 문제입니다.

2개를 합쳐서 결과표를 구성한다는게 쉬운일이 아닐걸요?

대충 짜집기해 봐야 구도가 안나옵니다. 무의미한 집합이 될 뿐이죠.

두 자료를 합쳐서 쓸모있는 집합이 되도록 해야죠.

마농(manon94)님이 2016-11-10 11:18에 작성한 댓글입니다.

그렇군요..

 

알겠씁니다

 

감사합니다~~

썬큐스트님이 2016-11-10 11:26에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7018distinct 혹은 group by 문의 [3]
이정훈
2016-12-13
2386
7017물품관리에서 입고 출고된것 모두 제거하고 싶습니다. [2]
빨간운동화
2016-12-13
2521
7015SQL Server Managerment Studio Express 공급자 속성 비활성화 [2]
도우덕
2016-11-23
2709
70142개의 select을 [4]
썬큐스트
2016-11-10
3128
7013두날짜사이 연속된 날짜를 추출할 수 있을까요?? [4]
빨간운동화
2016-11-03
3682
7012고수님들 쿼리 좀 알려주세요. [1]
선도리
2016-10-17
2866
7011두개의 쿼리를 하나로 합치기 질문 입니다. [3]
달바라기
2016-10-17
2870
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2022 DSN, All rights reserved.
작업시간: 0.062초, 이곳 서비스는
	PostgreSQL v14.2로 자료를 관리합니다