2012-01-09 4 views
-2

Possible Duplicate:
Unable to run analytical function in Sql Server이 Oracle 쿼리에 해당하는 SQL Server는 무엇입니까?

SQL 서버에서 분석 기능을 실행하려고했지만 어려움을 겪고 있습니다.

은 여기에 잘 작동 오라클 구문, 내 쿼리입니다 :

SELECT 
    TEAM_ID, 
    LEVEL_ID, 
    FF_ID, 
    MODULE_ID, 
    TERR_ID, 
    MERGE_KEY, 
    count(distinct TERR_ID) over (partition by TEAM_ID,LEVEL_ID,FF_ID,MODULE_ID) 
    || ' of ' || 
    count(distinct TERR_ID) over (partition by TEAM_ID,LEVEL_ID,FF_ID) 
    as MISMATCH_TERR_COUNT_IN_FF 
FROM SCN7BBFE80210E04E2F88653A.PA83FB9BD57E044618B7AC86A; 

그러나 SQL Server의 동일한 일을 할 때 나는 오류를 받고 있어요. 내가 같은 테이블에 열 TEAM_ID, LEVEL_ID, FF_ID, MODULE_ID, TERR_IDMERGE_KEY 한 다음 삽입 값으로 테이블을 생성

: 여기

insert into PA83FB9BD57E044618B7AC86A values('3',1,'YH','PERF','3XBDA3',1)   
insert into PA83FB9BD57E044618B7AC86A values('3',1,'YH','PERF','3XAJA3',1) 

내가 SQL을 위해 사용하고 쿼리입니다 서버 :

SELECT 
    TEAM_ID, 
    LEVEL_ID, 
    FF_ID, 
    MODULE_ID, 
    TERR_ID, 
    MERGE_KEY, 
    ISNULL(CAST(count(distinct TERR_ID) OVER(PARTITION BY TEAM_ID, LEVEL_ID, FF_ID, MODULE_ID) AS nvarchar(max)), '') 
    + ' of ' + 
    ISNULL(CAST(count(distinct TERR_ID) OVER(PARTITION BY TEAM_ID, LEVEL_ID, FF_ID) AS nvarchar(max)), '') 
    AS MISMATCH_TERR_COUNT_IN_FF 
FROM dbo.PA83FB9BD57E044618B7AC86A 

내가이 쿼리를 실행하려고, 나는 다음과 같은 오류 얻을 :

ERROR:Incorrect syntax near 'distinct'. 

나는 같은 오류를 제공하는 최소한의 쿼리를 만들려고, 나는이 함께했다 :

SELECT 
    TEAM_ID, 
    LEVEL_ID, 
    FF_ID, 
    MODULE_ID, 
    TERR_ID, 
    MERGE_KEY, 
    cast(count(distinct TERR_ID) OVER(PARTITION BY TEAM_ID, LEVEL_ID, FF_ID, MODULE_ID) 
    AS MISMATCH_TERR_COUNT_IN_FF 
FROM dbo.PA83FB9BD57E044618B7AC86A 

그리고 난 여전히 오류 얻을 :

ERROR:Incorrect syntax near 'distinct' 

나는 또한 제거 노력을 cast() 부분도 있지만 같은 오류가 항상 나타납니다.

내가 뭘 잘못하고 있니?

+0

여기서 문제는 '파티션 BY'를 사용하는 것일 수 있습니다. 지금까지 내가 아는 한 SQL Server에는이 기능과 직접적으로 같은 기능이 없습니다. 일반적으로 Oracle PL/SQL과 Microsoft T-SQL에는 호환되지 않는 많은 기능이 있기 때문에 두 기능 모두에서 동일한 동작을 수행 할 수있는 것은 아닙니다. –

+1

@DanielPryden - 올바르지 않습니다. SQL Server는'partition by '과'over'를 가지고 있습니다. 이 질문에 대답을 http://stackoverflow.com/questions/8791559/unable-to-run-analytical-function-in-sql-server/8791603#8791603, SQL Server 'count (distinct col)'할 수 없습니다. 'count'가'over' 절의 일부일 때. – Eric

+0

@ Eric : 고마워, 나는 그걸 몰랐다. –

답변

관련 문제