2014-01-28 4 views
-1

코드에 대한 설명을 읽는 쿼리가 있습니다. 쿼리 모두가 하나 더 row.Below 중복 제공 그들이 하나 개의 행을 반환하지만 함께 개별적으로 나는 경우에도이 하나의 답을 시작 해야할지하지 않는 쿼리두 테이블이 조인 될 때 ​​중복 행

SELECT source, description = IsNull(Max(RTRIM(LTRIM(description))), 'UNKNOWN') 
    FROM SOURCES where source = RTRIM(LTRIM('SCDGIFT12')) 
GROUP BY source 

SELECT UPPER(SOURCECODE) as SOURCECODE,ISNULL(COUNT(ORDER_ID),0) AS ORDID 
    FROM SRC_CODE 
WHERE CODE = 'SCDGIFT12' AND ORDER_DATE BETWEEN CONVERT(DATETIME,'10/01/2013')  
    AND CONVERT(DATETIME,'01/26/2014') 
GROUP BY sourcecode 

SELECT SOURCECODE,ORDID,DESCRIPTION 
    FROM (SELECT UPPER(SOURCECODE) as SOURCECODE, ISNULL(COUNT(ORDER_ID),0) AS ORDID)  
      FROM SRC_CODE 
      WHERE SOURCECODE = 'SCDGIFT12' and ORDER_DATE BETWEEN CONVERT(DATETIME,'10/01/2013') AND CONVERT(DATETIME,'01/26/2014')AND (UPPER(SOURCECODE) IS NOT NULL) 
      GROUP BY UPPER(SOURCECODE)) AS T LEFT JOIN ( 
       SELECT source, description = IsNull(Max(RTRIM(LTRIM(description))), 'UNKNOWN') from SOURCES group by source) as B ON RTRIM(LTRIM(T.SOURCECODE)) = RTRIM(LTRIM(B.SOURCE)) 
    ORDER BY sourcecode 

답변

0

를하는 실행합니다.

  • 질문이 잘못되었습니다. 두 테이블을 결합하지 않았습니다. 두 가지 결과 세트를 합치고 있습니다.
  • 처음 두 문장에는 두 개의 컬럼 만 있지만 마지막 문장에는 3 개의 컬럼이 있습니다.
  • 코드가 올바르지 않으므로 컴파일하기 전에 수정해야하는 몇 가지 구문 오류가 있습니다. 귀하의 괄호가 잘못된 장소에 있습니다.
  • 나는 당신이 합류하고있는 것이 무엇인지 확신하지 못합니다.
  • 가입 및 계산시 사과와 오렌지를 오렌지와 함께 넣고 따로 따로 계산하지 말고 함께 넣은 다음 두 가지가 모두 같을 것을 기대해야합니다. 여기

이 코드는 포맷 및 괄호 장소를 해결하기 위해 이동

SELECT SOURCECODE 
    ,ORDID 
    ,DESCRIPTION 
FROM (SELECT UPPER(SOURCECODE) AS SOURCECODE 
      ,ISNULL(COUNT(ORDER_ID), 0) AS ORDID 
     FROM SRC_CODE 
     WHERE SOURCECODE = 'SCDGIFT12' 
      AND ORDER_DATE BETWEEN CONVERT(DATETIME, '10/01/2013') 
          AND  CONVERT(DATETIME, '01/26/2014') 
      AND (UPPER(SOURCECODE) IS NOT NULL) 
     GROUP BY UPPER(SOURCECODE)) AS T 
LEFT JOIN (SELECT source 
        ,description = ISNULL(MAX(RTRIM(LTRIM(description))), 'UNKNOWN') 
       FROM SOURCES 
       GROUP BY source) AS B 
    ON RTRIM(LTRIM(T.SOURCECODE)) = RTRIM(LTRIM(B.SOURCE)) 
ORDER BY sourcecode 

내가 당신도이 함께하고 싶었던 것을 확실하지 않다 "나는 희망"하지만, 당신이 원하는 모든 경우 얻을 수있다 중복을 제거하면 DISTINCT을 넣어 중복 행을 제거 할 수 있지만 근본적인 문제는 해결되지 않습니다. 집계하려는 것이 무엇인지 파악하고 하위 쿼리에 합류하는 대신 더 좋은 방법을 찾아야합니다.

관련 문제