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_ID
및 MERGE_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()
부분도 있지만 같은 오류가 항상 나타납니다.
내가 뭘 잘못하고 있니?
여기서 문제는 '파티션 BY'를 사용하는 것일 수 있습니다. 지금까지 내가 아는 한 SQL Server에는이 기능과 직접적으로 같은 기능이 없습니다. 일반적으로 Oracle PL/SQL과 Microsoft T-SQL에는 호환되지 않는 많은 기능이 있기 때문에 두 기능 모두에서 동일한 동작을 수행 할 수있는 것은 아닙니다. –
@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
@ Eric : 고마워, 나는 그걸 몰랐다. –