2012-11-06 4 views
10

내가이 양식SELECT SUM()

SELECT columnA 
     AS 
     'numbers' 
FROM tableA 
WHERE clause 
에 올바른 작업 T-SQL 스크립트를()() SELECT SELECT (FROM

이 스크립트는 정수의 하나의 열이라는 숫자, 나를 수 있습니다. I 이 합계 싶다.

을 위 라인 '스크립트'를 호출 나는 그러나, 그것은. 내가 "잘못된 구문을 근처가 계속되지 않습니다, 나는이 작업을 가정 select count(*) from select을 읽고 다음 설치

SELECT SUM(numbers) 
FROM (
      script 
     ) 

을 시도했다. "

중요한지는 모르겠지만 여기서는 columnA라는 자체가 SELECT 문에 의해 처리됩니다.

+1

당신은 용어 "스크립트"를 오용 될 것으로 보인다. 사용중인 * exact * 쿼리를 게시하고 정확한 * 오류를 게시 할 수 있습니까? – ruakh

답변

17

당신은 서브 쿼리에 별칭이 필요합니다

SELECT SUM(numbers) 
FROM  
(
    script -- your subquery will go here 
) src -- place an alias here 

그래서 전체 쿼리가 될 것입니다 :

select sum(numbers) 
from 
(
    SELECT columnA AS numbers 
    FROM tableA 
    WHERE clause 
) src 
+0

BTW, 이것은 tSQL 문제입니다. 하위 쿼리를 별칭으로 지정하더라도 Oracle은 상관하지 않습니다. MySQL이나 기타에 대해서는 잘 모르겠지만, tSQL은 모든 서브 쿼리에 별명을 요구합니다. – Bill

+2

@Bill : 오라클은 잘못 처리합니다. 일을 올바르게 구현하는 것은 문제가되지 않습니다. –

+0

@Bill 내 기본 설정은 그것이 필요한지 여부에 관계없이 모든 하위 쿼리의 별칭을 지정하는 것입니다. 그것은 데이터가 어디서 오는 것인지 훨씬 명확하게 해줍니다. – Taryn

5

당신이 원하는 것을 달성하기 위해 무엇이든지 전혀 문제가 없습니다. 귀하의 엔티어 검색어가 표시되지 않지만 가장 일반적인 문제는 사람들이 자신의 중첩 된 select 성명에 별칭을 추가하는 것을 잊어 버리는 것입니다. 완벽하게 작동이 샘플에서보세요 :

select sum(col1) as sum1 
from (select col1 
     from (select 1 col1 union all select 2 union all select 3) tmp 
    ) tmp2 

영업에 따르면, 여기에 최종 쿼리입니다 :

SELECT SUM(numbers) 
FROM (
      SELECT columnA 
        AS 
        'numbers' 
       FROM tableA 
      WHERE clause 
     ) tmp